0

テーブルに外部キーを追加する際に問題が発生していますvotes

mysql> describe votes;
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| user_id  | int(11) unsigned | NO   |     | NULL    |                |
| video_id | int(11) unsigned | NO   |     | NULL    |                |
| vote     | int(11)          | NO   |     | NULL    |                |
+----------+------------------+------+-----+---------+----------------+

mysql> describe user;
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| email    | varchar(256)     | NO   | MUL | NULL    |                |
| password | varchar(32)      | NO   |     | NULL    |                |
| name     | varchar(24)      | NO   |     | NULL    |                |
+----------+------------------+------+-----+---------+----------------+

Votes.user_idは、User.idへの外部キーです。しかし、ボットは私が実行したときに同じ時間を持っています:

mysql> alter table `votes` 
       add CONSTRAINT `votes_FK_1` 
       FOREIGN KEY (`user_id`) REFERENCES `user` (`id`);

MySQLは古き良き150を投げています

ERROR 1005 (HY000): Can't create table 'crocko.#sql-6e1_3c5' (errno: 150)

私は何が間違っているのですか?

4

1 に答える 1

1

テーブルにデータが保存されているかどうかを確認する必要があります。保存されている場合は、それらを削除する必要があります。

または、MySQL DBエンジンがMyISAMの場合、テーブルの作成後に外部キーを追加することはできません。

InnoDBに変更する方法を確認できます。

于 2012-10-05T17:30:34.647 に答える