在rails中添加外键

wwodge7n  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(538)

我有两张table, casino_users 以及 accounts .
我想做点什么 casino_users.username 引用的外键 accounts.email .
我试过这个:

class AddForeignKeyToCASinoUsers < ActiveRecord::Migration[5.2]
  def up
    add_foreign_key :casino_users, :accounts, column: :username, primary_key: "email"
  end 

  def down
    remove_foreign_key :casino_users, column: :username
  end 
end

但这给了我一个错误 Cannot add or update a child row: a foreign key constraint fails .
我使用的语法有问题吗?

w8f9ii69

w8f9ii691#

第一个猜测是,现有表中的数据与您现在添加的约束不兼容。如果这看起来不是问题,那么在这个错误发生的时候,最好给出更多的上下文。当你试图运行迁移是我的假设。
ps您可能会遇到麻烦,试图使用设置一个主键,这是有语法意义的,也可能会发生变化。如果您将主键设置为id,并通过id将用户链接到帐户,您将有一个更轻松的时间,例如,某天您希望允许用户更改其电子邮件地址。如果您想确保有一个帐户与电子邮件地址相关联,那么可以通过电子邮件字段上的uniq约束轻松实现。

相关问题