无法创建错误号为150的表

时间:2017-05-18 09:35:43

标签: mysql foreign-keys

我使用下面的create table在mysql中创建一个posts表:

mysql> create table posts(
    -> post_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> author_id INT NOT NULL,
    -> title varchar(50),
    -> post TEXT,
    -> data DATE,
    -> FOREIGN KEY (author_id)
    -> REFERENCES authors(author_id)
    -> ON DELETE RESTRICT)ENGINE=INNODB;

但我总是得到这个错误: ERROR 1005(HY000):无法创建表格myFirstBlog.posts' (错误:150)

我的作者表的描述如下:

mysql> desc authors;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| author_id | int(11)     | NO   | PRI | NULL    | auto_increment |
| user_name | varchar(16) | YES  |     | NULL    |                |
| password  | varchar(40) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

有人可以帮我解决错误的位置。

提前致谢。

1 个答案:

答案 0 :(得分:0)

async Task

请使两个表的列的数据类型相同。 作者(author_id)和帖子(author_id)

首先创建authors表,然后执行上面的查询。

我曾尝试过以下查询,它为我工作。

create table posts(
     post_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
     author_id INT NOT NULL,
     title varchar(50),
     post TEXT,
     data DATE,
     FOREIGN KEY (author_id)
     REFERENCES authors(author_id)
     ON DELETE RESTRICT
     )ENGINE=INNODB;

希望这会有所帮助。