【问题标题】:error when i am try to using in foregin key, foregin key当我尝试在外键中使用时出错,外键
【发布时间】:2020-05-09 21:25:36
【问题描述】:

当我尝试创建外键时出现错误,我不确定它为什么会发生。

如果您能帮助我修复并理解为什么会发生此错误,我将很高兴。 非常感谢。

【问题讨论】:

  • 第 4 行:我认为您不小心将表命名为customers_id,而不是customers
  • @GMB 是对的,只需将外键的数据类型更改为int 而不是varchar

标签: mysql sql database foreign-keys create-table


【解决方案1】:

外键列必须与它在源表中引用的列具有相同的数据类型。

您已在customers 表中将custmer_id 列定义为int,因此您需要在sales 表中将customer_id 定义为int,而不是varchar(255)

参考:MySQL conditions and restrictions on foreign keys

外键和引用键中的对应列必须具有相似的数据类型。整数类型的大小和符号必须相同。字符串类型的长度不必相同。对于非二进制(字符)字符串列,字符集和排序规则必须相同。

【讨论】:

    【解决方案2】:

    这里有两个问题:

    (1) 列类型应与GMB中提到的相同

    (2) 在您的外键语句中,您指的是表customers,但您的第一个创建表语句创建了表customers_id。所以外键语句应该是:

    foreign key(customer_id) references customers_id(customer_id) on delete cascade
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-21
      • 2013-11-16
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      相关资源
      最近更新 更多