我试图创建一个带有相关表的外键的表。我收到错误'无法添加外键约束'在尝试创建此表时,我检查了两个表的数据类型,它们是相同的。我还有其他原因可以收到此错误吗?
表:
用于保存FK的表的SQL:
CREATE TABLE messages
(
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
subject varchar(50),
message text,
message_time datetime DEFAULT CURRENT_TIMESTAMP,
unread boolean DEFAULT true,
sender varchar(16) NOT NULL,
FOREIGN KEY(sender) REFERENCES users(username) ON DELETE CASCADE
)
答案 0 :(得分:0)
您的sender_id和user_id应该具有相同的数据类型+大小+相同的属性,即UNSIGNED
答案 1 :(得分:0)
我尝试使用laravels migrate创建表,它运行时没有错误。使用以下内容:
Schema::create('messages', function(Blueprint $table)
{
$table->increments('id');
$table->string('subject', 50);
$table->string('content');
$table->boolean('unread')->default(true);
$table->string('sender', 16);
$table->timestamps();
$table->foreign('sender')->references('username')->on('users')->onDelete('cascade');
});
我仍然不确定两列中的不同之处是它们不能是外键..