hmchzb19 发表于 2016-05-24 14:08

为什么重建同名的外键表会失败

本帖最后由 hmchzb19 于 2016-05-24 14:08 编辑

1. 我先是建了两个表。CREATE TABLE employee(
        employee_id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
        last_name VARCHAR(30) NOT NULL,
        first_name VARCHAR(30) NOT NULL,
        email VARCHAR(100) NOT NULL,
        hire_date DATE NOT NULL,
        notes MEDIUMTEXT,
        PRIMARY KEY(employee_id),
        INDEX(last_name),
        UNIQUE(email)
        )ENGINE=InnoDB;
CREATE TABLE address(
        employee_id int(10) UNSIGNED NOT NULL,
        address VARCHAR(50) NOT NULL,
        city VARCHAR(30) NOT NULL,
        state CHAR(2) NOT NULL,
        postcode CHAR(5) NOT NULL,
        FOREIGN KEY(employee_id)
        REFERENCES employee(employee_id) )
        ENGINE=InnoDB;然后我drop 了表address, 打算重建这个表。SET FOREIGN_KEY_CHECKS = 0;
drop table address;
重建表就一直报错。mysql> CREATE TABLE address(
    -> employee_id int(10) UNSIGNED NOT NULL,
    -> address VARCHAR(50) NOT NULL,
    -> city VARCHAR(30) NOT NULL,
    -> state CHAR(2) NOT NULL,
    -> postcode CHAR(5) NOT NULL,
    -> FOREIGN KEY(employee_id)
    -> REFERENCES employee(employee_id) on update cascade ON DELETE CASCADE)
    -> ENGINE=InnoDB;
ERROR 1005 (HY000): Can't create table 'sakila.address' (errno: 150)
为什么?
因为我没有删除干净什么东西吗?

过过招 发表于 2016-05-24 14:24

运行了,没报错。

hmchzb19 发表于 2016-05-24 14:35

是的,我后来发现问题了,我本来有一个表也叫address,被我drop table if exist误删了。
然后我建这个表就一直报错。
页: [1]
查看完整版本: 为什么重建同名的外键表会失败