2012-03-05 15 views
1

NaviCat(MySQLアプリケーション)で外部キーを作成しましたが、作成した時点で外部キーリストから消え、新しいインデックスが追加されます。それは何かが間違っていたことを意味するのでしょうか、それとも起こるのが普通ですか外部キーが作成されているかどうかを確認する方法

私はinformation_schema How to check if a column is already a foreign key?を使用しようとしましたが、その結果はUnknown table 'REFERENTIAL_CONSTRAINTS' in information_schemaです。クエリはMsSQL用で、MySQLとは異なる可能性がありますか?

答えて

4
  1. おそらく外部キーを作成しているテーブルはMyISAMです。デフォルトのストレージエンジン= InnoDBの

  2. あなたが追加http://kevin.vanzonneveld.net/techblog/article/convert_all_tables_to_innodb_in_one_go/

  3. での手順次のInnoDBにすべてのテーブルを を変更することができます

  4. のInnoDB

    にテーブルエンジンを変更するには、表のデザインビューに移動し、[オプション]タブに移動します http://dev.mysql.com/doc/refman/5.5/en/innodb-default-se.html

から(通常のmy.cnf)MySQLの設定ファイルの[mysqld]セクションに何の欠陥がInnoDBがデフォルトのストレージエンジンで後のすべてのMySQL 5.5からはありません。

+0

これをすべてのテーブルで同時に実行できますか? EngineのデフォルトをInnoDBに設定しますか?それとも欠陥がありますか? –

+2

@Webscrabblerには欠陥はありませんが、MyISAMはInnoDBより速くなることがあります。例えば、MyISAMは、ノンブロッキングと非トランザクションの同時挿入を処理します。また、プライマリキーでクラスタ化されていません(デメリットもあります)。そのため、テーブルの作業負荷に応じていくつかのパフォーマンスの問題が存在する可能性があります。 –

2

SHOW CREATE TABLE myTable; 

を実行して、これが本当であるならば、あなたは外部キーを使用することができます

ENGINE = InnoDB 

を確認してください。次のような内容が含まれているかどうかを確認してください。

FOREIGN KEY (customer_id) REFERENCES customer(id) 

関連する問題