【问题标题】:Why I cannot assign foreign key to this column?为什么我不能为该列分配外键?
【发布时间】:2015-06-02 13:42:04
【问题描述】:

我有一个主用户表

create table `users` (
`id` int (10),
`first_name` varchar (192),
`last_name` varchar (192),
`password` varchar (96),
`phone` int (10),
`email` varchar (768),
`date_created` timestamp 
); 

然后我有一个帐户表,外键 user_id 指的是用户主表

create table `accounts` (
`id` int (10),
`user_id` int (11),
`account_number` bigint (12),
`account_type` varchar (192),
`balance` double ,
`currency` varchar (9),
`date_created` timestamp 
); 

最后,我有一个交易表,但是我也无法将外键分配给用户 ID

create table `transactions` (
`id` int (10),
`user_id` int (11),
`from_account_id` int (12),
`to_account_id` int (11),
`amount` double ,
`currency` varchar (9),
`timestamp` timestamp 
 ); 

每当我尝试从 transactions 表中向 user_id 添加外键以引用帐户中的 user_id 或用户表中的 id 时,我都会遇到相同的错误。

无法添加或更新子行:外键约束失败 (bank.#sql-34ec_2,约束#sql-34ec_2_ibfk_3外键 (user_id) 参考资料accounts (user_id))

我怎样才能避免这种情况,我还能做些什么来正确引用特定的单元格?

【问题讨论】:

  • 显示你正在使用的失败的stmt。为什么可以为空的 id?

标签: mysql database foreign-keys sqlyog


【解决方案1】:

截断所有表,然后为这些值设置外键。

【讨论】:

  • 谢谢,我把所有相关的表都截断了,然后加上外键,就通过了!
  • 现在修复你的表结构
  • 如果给定的答案对您有帮助,请将其设为正确答案 thks
【解决方案2】:

您的数据类型可能不同。 10 vs 11. 显示你正在执行的代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2019-03-07
    相关资源
    最近更新 更多