【问题标题】:rails db:migrate doesn't work after altering the database manuallyrails db:migrate 在手动更改数据库后不起作用
【发布时间】:2016-10-05 06:37:29
【问题描述】:

我还是个 Rails 新手,对 Rails 迁移有一些疑问。

我使用的是 rails 5、windows 8。我生成了一个模型并编写了一些代码来创建一个包含列的表。然后我从我的开发数据库(MySQL)中删除了该表并尝试再次执行 db:migrate 以查看它是否会创建写入迁移文件中的表和列。执行 db:migrate 后,它没有在终端中显示任何消息,也没有创建表和列。

根据我的观察,从 schema_migrations 中删除我的迁移文件版本并再次运行 db:migrate,它工作并创建了表和列。

想请教 Rails 开发的高手,为什么会这样,开始开发大型数据库模型时应该怎么做。

我还想要一些关于学习 ruby​​ on rails 的优秀资源材料的建议。

谢谢!

【问题讨论】:

    标签: mysql ruby database ruby-on-rails-5 rails-migrations


    【解决方案1】:

    这是因为rake db:migrate 只为当前尚未运行的环境运行迁移。因此,如果您运行 db:migrate 然后手动删除表形式 DB,您的应用程序不知道。

    MIgration Guides

    【讨论】:

    • 感谢 Piotor!所以在改变数据库本身时,我应该使用迁移文件来做吗?是否可以使用现有的迁移文件更改表?
    • 如果您编写了迁移文件并运行了 rake db:migrate,最好编写另一个迁移。您不必这样做,但它更清洁。如果您想再次运行所有迁移,您可以执行rake db:drop db:create db:migrate。要编辑上次迁移,您可以使用回滚,但这一切都在指南中。
    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 2014-04-30
    • 2012-03-04
    • 2015-08-01
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2010-09-17
    相关资源
    最近更新 更多