我使用以下代码编写了一个迁移:
class CreateTableSomeTable < ActiveRecord::Migration[5.1]
def change
create_table :some_tables do |t|
t.references :user, foreign_key: true
t.references :author, references: :user, foreign_key: true
t.text :summary
end
end
end
这是一个基本的迁移,它创建了一个数据库表。但是:当我运行
rails db:migrate
时,一个非常奇怪的错误消息中止了迁移:Mysql2::Error: Table 'my_database.some_tables' doesn't exist: SHOW FULL FIELDS FROM 'some_tables'
就好像错误在说它无法创建该表,因为该表确实存在,这没有任何意义。
我尝试过的事情:
- 检查数据库.yml文件,看起来没问题。没有更改,最近也成功运行了其他迁移(虽然没有创建数据库表的迁移)。 - 运行
bundle
以确保所有的gems都已安装。
- 删除了schema.rb
文件,使用另一个副本中的数据重新创建了数据库,并运行了rake db:schema:dump
来重新创建schema.rb
文件。我尝试再次运行迁移,仍然得到相同的错误。我正在使用
rails 5.1.1
和mysql2 0.4.6
。有什么提示可以让我运行迁移吗?
rake db:migrate:status
命令,以查看已应用于数据库的迁移。也许你会发现自己连接到了不同的模式,或者你会发现导致失败的迁移并非你认为的那个。 - Bustikiller