2012-01-04 3 views

答えて

7

これは、MySQLがENGINE = MyISAMで作成したテーブルの外部キー制約をサポートしていないためです。 ENGINE = InnoDBで(両方の)表を作成する必要があります。あなたはmy.cnfを微調整し、デフォルトを追加することで、またはあなたのJDBC URLに特殊変数を使用して行うことができます。

jdbc:mysql://localhost/dbname?characterEncoding=utf8&sessionVariables=storage_engine=InnoDB 
+1

FWIW、MySQL 5.5では、InnoDBはデフォルトではデフォルトのストレージエンジンです。 –

5

を示唆したように、ここでHibernate: Create Mysql InnoDB tables instead of MyISAMをあなたも

org.hibernate.dialect.MySQL5InnoDBDialect 
を使用するように Hibernateの方言を変更することができます

これは侵襲性が低い。

代替ソリューションとしてこれを追加したかっただけです。

+0

JPAを使用してスキーマを作成していますが、上記はどこに配置されていますか? persistance.xmlには? –

+0

これはhibernate.propertiesファイルに入ります – konqi

関連する問題