0

私は以下を実行しようとしています:

CREATE TABLE IF NOT EXISTS table_name (
user_id int(11) NOT NULL,
other_id int(11) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (other_id) REFERENCES other_table(id),
PRIMARY KEY (user_id, other_id)
);

次のエラーが表示されます。

#1005 - Can't create table 'database_name.table_name' (errno: 150)

私は何か間違ったことをしていますか?これは、phpmyadmin sql 環境ではなく、別の環境で実行するだけで問題なく動作します。

4

3 に答える 3

1

このSO questionを見てください。

正しい答えに注意してください。列の種類を確認してください。一致する必要があります。あなたの問題かもしれません。

一般に、Mysql での FKの正式なガイドは次のとおりです。

SHOW ERRORS に加えて、InnoDB テーブルに関連する外部キー エラー (通常、MySQL サーバーではエラー 150) が発生した場合、SHOW ENGINE INNODB STATUS の出力を確認することで、最新の InnoDB 外部キー エラーの詳細な説明を取得できます。 .

編集:コメントの組み込み

PHPMyAdmin のテーブルはMyISAMにデフォルト設定されていました。Local では、デフォルトでInnoDBに設定されていました。MyISAMは FK をサポートしていません。MySql Documentationに基づいているため、これは違いを完全には説明していません.FKを作成せずに機能するはずです. (おそらく設定の問題か、古いバージョンの問題)

于 2013-06-21T03:13:41.383 に答える
0

存在しますusersか?other_table

存在しないテーブルへの外部キー参照を持つことはできません。

後で参照を追加できますalter table

于 2013-06-21T03:11:43.513 に答える
0
DROP TABLE IF EXISTS `table_name`;
CREATE TABLE IF NOT EXISTS table_name (
user_id int(11) NOT NULL,
other_id int(11) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (other_id) REFERENCES other_table(id),
PRIMARY KEY (user_id, other_id)
);
于 2013-06-21T04:42:31.270 に答える