InnoDBとMyISAMを混同させるときの注意点
MySQLのInnoDBで外部キー制約をMyISAMに対して行った場合、insertするとエラーになってなやまされました。
何回インサートしても外部キーが指定されてないてきなメッセージが・・・。
状況的にはこんな感じです。
classテーブル
<td>
int autor increment
</td>
<td>
varchar(45)
</td>
studentテーブル
<td>
int autor increment
</td>
<td>
int
</td>
<td>
varchar(255)
</td>
<td>
int3
</td>
ER図
studentテーブルが、class_class_idを元にclassテーブルを参照しているという状況です。
まずclassテーブルに1件データを入れておきます
|
|
次にstudentテーブルにこんな感じでインサートしてみます。
|
|
これを実行すると以下のようなエラーがでます。
|
|
すげー悩んだんですが、どうやら原因は外部キーに設定しているテーブルがMyISAMだったからのようです。
よく考えたら、MyISAMは参照整合性をサポートしていないのでエラーがでて当然です・・・。
MySQL WorkbenchでInnoDBとMyISAMで外部キー設定したら警告ぐらい出てもくれてもいいのになーとか思ったりして・・・w