gpt4 book ai didi

mysql - 如何在不使用 Rails 匹配迁移的情况下修复具有许多表的数据库

转载 作者:数据小太阳 更新时间:2023-10-29 08:43:40 25 4
gpt4 key购买 nike

我正在帮助 friend 开发 Rails 应用程序。他们有一个包含许多表的数据库,这些表是使用 SQL 手动添加的,而不是使用 Rails 迁移。他们已经开始正常添加迁移,但他们需要让两者恢复同步。

如果我们现在添加迁移,它们会出错,因为那些表/列已经存在。如果我们将它们排除在外,人们必须使用 db:schema:load 来启动和运行,然后通过名称一次一个地运行迁移以避免错误。我们希望避免这种情况并恢复到健康状态。

有谁知道有更好的方法让迁移与数据库同步?我们必须在不丢失任何数据的情况下执行此操作。

最佳答案

这是 question with the same problem (因为旧的没有被接受的答案,所以没有投票赞成关闭你的副本):

解决方法是:

  1. Start by referencing your existing MySQL database in database.yml.
  2. run rake db:schema:dump to generate the schema.rb file
  3. Paste the create_table methods from your schema.rb into a new migration, and Voila!

为避免任何不一致,您始终可以检查该表是否已经存在,如果存在,则完全跳过迁移:

class CreateTable < ActiveRecord::Migration
def change
unless ActiveRecord::Base.connection.table_exists?('table_name')
create_table :table_names do |t|
# some columns
end
end
end
end

关于mysql - 如何在不使用 Rails 匹配迁移的情况下修复具有许多表的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39729706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com