mysql外键问题

标签 mysql foreign-keys innodb mysql-error-1005

这里加外键有什么问题:

mysql> create table notes ( 
     id int (11) NOT NULL auto_increment PRIMARY KEY, 
     note_type_id smallint(5) NOT NULL, 
     data TEXT NOT NULL, 
     created_date datetime NOT NULL, 
     modified_date timestamp NOT NULL on update now()) 
     Engine=InnoDB;
Query OK, 0 rows affected (0.08 sec)

mysql> create table notetypes ( 
       id smallint (5) NOT NULL auto_increment PRIMARY KEY, 
       type varchar(255) NOT NULL UNIQUE) 
       Engine=InnoDB;
Query OK, 0 rows affected (0.00 sec)


mysql> alter table `notes` add constraint 
      foreign key(`note_type_id`) references `notetypes`.`id` 
      on update cascade on delete restrict;
ERROR 1005 (HY000): Can't create table './admin/#sql-43e_b762.frm' (errno: 150)  

谢谢

日本

最佳答案

我认为 FK 需要命名。

尝试

ALTER TABLE `test`.`notes` ADD CONSTRAINT `note_type_id` FOREIGN KEY `note_type_id` (`note_type_id`)
    REFERENCES `notetypes` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE;

关于mysql外键问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4578611/

相关文章:

php - 如何使用两个以上的 "WHERE"子句?错误

Mysql SET 引用外键

mysql - mysql无法添加外键约束

mysql - 如何查看mysql中索引的大小(包括主键)

mysql - 无论我做什么,Phpmyadmin 都会向我抛出错误 1146 'table xxx.xxx doesn' t Exist'

mysql - 使用另一个选择查询的结果将数据插入表中

MySQL - SQL 语句有效但无法创建 VIEW

sql - 如何在 SQL 中迭代所有名称和排名排列

php - 同时插入多个外键

mysql - InnoDB - 使用复合主键来集群行而不是二级索引的缺点?