php - 如何解决mysql代码的errno 150?

标签 php mysql sql

为什么创建第二个表(标签)时出现错误?

$sql = "CREATE TABLE IF NOT EXISTS Articls (
            id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,     
            name VARCHAR(254) COLLATE utf8_persian_ci NOT NULL,                     
            alias INT(10) UNSIGNED NOT NULL
)   DEFAULT COLLATE utf8_persian_ci";


/////////////////////////////////////////////////////////////////////////

$sql = "CREATE TABLE IF NOT EXISTS Tags (
            id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,  
            alias INT(10) UNSIGNED NOT NULL,    
            name VARCHAR(256) COLLATE utf8_persian_ci NOT NULL,    
            FOREIGN KEY (alias) REFERENCES Articls (alias)      
) DEFAULT COLLATE utf8_persian_ci";

错误:

Table Articls created successfully / Error creating Tags: Can't create table 'admin_pars.Tags' (errno: 150)

最佳答案

您的外键引用正在引用 Articles 中的任意列。要么你想要:

FOREIGN KEY (alias) REFERENCES Articls (id)  
                                      //^^ 

或者,您希望将 alias 声明为 Articles 中的唯一键。

关于php - 如何解决mysql代码的errno 150?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020487/

相关文章:

MySQL 和从多个表中收集和统计信息

sql - 使用循环查询 SQL 的最快方法

javascript - Symfony Controller 返回的变量始终未定义

php - Server2Go 不保存我的数据库

php - MySQL 更新返回值

php - 客户端问题的分页记录

MySQL 触发器问题

MySQL 在另一个表中存储表的校验和

MySQL根据另一个表的字段指定更新记录的字段

php - 尝试让 INSERT 仅插入新数据