Ruby on rails Rake数据库:针对现有数据库的迁移
我有一个新的rails应用程序,它将使用现有的数据库(由另一个ruby应用程序创建)。 为此,我为一个已经存在的数据库表创建了一个模型,但现在rails向我提供了必须运行的错误消息Ruby on rails Rake数据库:针对现有数据库的迁移,ruby-on-rails,rake,Ruby On Rails,Rake,我有一个新的rails应用程序,它将使用现有的数据库(由另一个ruby应用程序创建)。 为此,我为一个已经存在的数据库表创建了一个模型,但现在rails向我提供了必须运行的错误消息 rake db:migration 但是如果我尝试这样做,我会得到一个错误,因为表已经存在 是否有任何方法可以执行迁移并忽略现有表?该表是正确的,应该存在,并且填充了其他应用程序的数据。我希望使用此应用程序来使用这些信息 谢谢 编辑: DB设置很好,因为我以前能够执行DB:迁移。我使用 rails g model
rake db:migration
但是如果我尝试这样做,我会得到一个错误,因为表已经存在
是否有任何方法可以执行迁移并忽略现有表?该表是正确的,应该存在,并且填充了其他应用程序的数据。我希望使用此应用程序来使用这些信息
谢谢
编辑:
DB设置很好,因为我以前能够执行DB:迁移。我使用
rails g model fundo
(fundo是模型的名称,fundoS是表的名称)
模型还没有属性,但表有列
编辑2:
这些是使用--trace运行时的输出
$rake db:schema:dump--trace
**调用db:schema:dump(第一次)
**调用环境(第一次)
**执行环境
**调用数据库:加载配置(第一次)
**执行db:load\u config
**执行db:schema:dump
$rake db:migrate--trace
**调用数据库:迁移(第一次)
**调用环境(第一次)
**执行环境
**调用数据库:加载配置(第一次)
**执行db:load\u config
**执行数据库:迁移
==CreateFundos:正在迁移===================================================
--创建表格(:fundos)rake中止!发生错误,此迁移和所有后续迁移已取消:PG::DuplicateTable:错误:关系
“fundos”已存在创建表“fundos”(“id”序列主
键,“在时间戳处创建”,在“时间戳”处更新)
rails似乎正在尝试重新创建表。但是我只是想让它们同步,因为表已经在那里了 如果使用
rails g model
为现有表创建模型,只需删除创建的迁移文件即可
表模式将正确转储到schema.rb中,因此,即使没有迁移文件,也可以使用rake db:setup
在其他机器上从头开始创建
您可以使用
rake db:schema:dump
手动更新schema.rb。如果您使用rails g model
为已经存在的表创建模型,只需删除创建的迁移文件即可
表模式将正确转储到schema.rb中,因此,即使没有迁移文件,也可以使用rake db:setup
在其他机器上从头开始创建
您可以使用
rake db:schema:dump
手动更新schema.rb。是否有大量要执行的迁移文件?如果不是太多,您可以通过执行特定版本的迁移
rake db:migrate:redo VERSION=version
如果要创建的迁移文件表不太多,您可以通过添加以下内容来编辑迁移文件:
if ActiveRecord::Base.connection.table_exists?(table_name)
在创建表之前
在您的本地环境中,也许您可以删除不必要的文件。是否有很多要执行的迁移文件?如果不是太多,您可以通过执行特定版本的迁移
rake db:migrate:redo VERSION=version
如果要创建的迁移文件表不太多,您可以通过添加以下内容来编辑迁移文件:
if ActiveRecord::Base.connection.table_exists?(table_name)
在创建表之前
在本地环境中,也许您可以删除不必要的文件。cd db/migrate/
ls | cut-d'| f1 |同时读取行;do bundle exec rake db:migrate:up VERSION=$line;完成
运行文件cd db/migrate中的所有迁移/
ls | cut-d'| f1 |同时读取行;do bundle exec rake db:migrate:up VERSION=$line;完成
运行文件中的所有迁移
--创建表格(:fundos)rake中止!发生错误,此迁移和所有后续的>迁移已取消:PG::DuplicateTable:错误:关系“fundos”已存在>创建表“fundos”(“id”串行主键,“在“时间戳”创建,>在“时间戳”更新)
我要做的是转到db/migrate,然后转到发生create_table(:fundos)的迁移文件。把那一行注释掉。再试一次,如果它再次抛出错误,请检查错误并找到有问题的代码。然后评论出来,继续这样做,直到它通过。一旦它通过,联合国评论一切
--创建表格(:fundos)rake中止!发生错误,此迁移和所有后续的>迁移已取消:PG::DuplicateTable:错误:关系“fundos”已存在>创建表“fundos”(“id”串行主键,“在“时间戳”创建,>在“时间戳”更新)
我要做的是转到db/migrate,然后转到发生create_table(:fundos)的迁移文件。把那一行注释掉。再试一次,如果它再次抛出错误,请检查错误并找到有问题的代码。然后评论出来,继续这样做,直到它通过。一旦它通过,联合国评论一切 您能否确认您的数据库配置正确,并且您现有的表命名符合新创建模型的Rails标准?@vee更新了问题;)您能否确认您的数据库配置正确,并且您现有的表命名符合新创建模型的Rails标准?@vee更新了问题;)这在Rails 6中仍然有效。这在Rails 6中仍然有效。