当前位置: 首页 > 知识库问答 >
问题:

MySQL+Rails:errno:150“外键约束格式不正确”

席银龙
2023-03-14

我正在尝试迁移我的Rails MySQL数据库,但遇到以下错误:

ActiveRecord::StatementInvalid:mysql2::错误:无法创建表开发注释(错误号:150“外键约束格式不正确”):创建表注释(idint AUTO_INCREMENT主键,commentvarchar(255),user_idint,post_idint,created_atdatetime不为空,updated_at

以下是我的迁移:

class CreateUsers < ActiveRecord::Migration[5.0]
  def change
    create_table :users do |t|
      t.string :first_name
      t.string :last_name
      t.string :linkedin_username
      t.string :facebook_username
      t.string :facebook_id
      t.string :profile_image
      t.string :title_image
      t.string :connection
      t.boolean :team
      t.boolean :active
      t.boolean :admin
      t.string :email
      t.string :password_digest

      t.timestamps
    end
  end
end    

class CreateComments < ActiveRecord::Migration[5.0]
  def change
    create_table :comments do |t|
        t.string :comment
        t.references :user, foreign_key: true
        t.references :post, foreign_key: true
      t.timestamps
    end
  end
end

class CreateCategories < ActiveRecord::Migration[5.0]
  def change
    create_table :categories do |t|
        t.string :name
      t.text :description

      t.timestamps null: false
    end
  end
end

class CreatePosts < ActiveRecord::Migration[5.0]
  def change
    create_table :posts do |t|
        t.string :title
      t.string :description
      t.references :category, foreign_key: true
      t.references :user, foreign_key: true
    end
  end
end

如果有人能在这里给我一个主意,我将非常感谢。我已经搜索了一段时间的解决方案,但没有找到任何与Rails相关的内容。谢谢你!

共有1个答案

方永贞
2023-03-14

我刚刚找到了这个问题的答案。我的错误与我的posts表迁移排在最后有关。我的注释表迁移引用了post table id父字段。当我重新生成注释表迁移并删除之前的注释表迁移时,一切都运行得很好。

 类似资料:
  • 迁移我的数据库时,会出现此错误。下面是我的代码,后面是我在尝试运行迁移时遇到的错误。 密码 错误消息 [Illumb\Database\QueryException] SQLSTATE[HY000]:一般错误:1005无法创建表(errno:150“外键约束格式不正确”)(sql:alter 表添加约束MEINS\u category\u id\u外键()参考()关于删除级联)

  • 我正在尝试迁移Rails MySQL数据库,出现以下错误: ActiveRecord::声明无效:MySQL2::Error:不能创建表.(errno: 150"外键约束格式不正确"): CREATE TABLE(intAUTO_INCREMENTPRIMary关键,varchar(255),int,int,datetime非空,datetime非空,INDEX(),INDEX(),CONSTRA

  • 我有一个帖子表和一个到达表,它引用了flight no(文本字符串格式)作为外键。然而,当我运行Laravel迁移时,我得到了可怕的错误: SQLSTATE[HY000]:常规错误: 1005不能创建表.(errno: 150"外键约束格式不正确")(SQL:改变表添加约束外键()引用() [PDOExc0019]SQLSTATE[HY000]:常规错误: 1005不能创建表.(errno: 15

  • 我有一个订单表和一个有一个引用作为一个外来的。然而,当我运行Laravel迁移我得到可怕的错误代码: SQLSTATE[HY000]:常规错误: 1005不能创建表.(errno: 150"外键约束格式不正确")(SQL:改变表add约束外键()引用() SQLSTATE[HY000]:常规错误: 1005不能创建表.(errno: 150"外键约束格式不正确") 这是我的表模式: 这是我的sch

  • 进行4次迁移,如下所示。这是用户表。 这就是艺术家的迁移。 这是歌曲迁移。 这就是专辑迁移。 这是一个连接众多艺术家和歌曲的特色。 当我尝试迁移这四个迁移时,会出现此错误。

  • 我试图执行此迁移: 用户: 文章: 但当我迁移时,会出现以下错误: SQLSTATE[HY000]:一般错误: 1005不能创建表.(Errcode: 150"外键约束是inc orrecly形成的")(SQL:更改表添加约束外键()引用()在更新级联上删除级联) 我已经尝试将大整数和大增量重命名为简单整数和增量,但没有成功。