Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带有分支的Rails Git迁移问题_Ruby On Rails_Ruby_Git_Cloud9_Dbmigrate - Fatal编程技术网

Ruby on rails 带有分支的Rails Git迁移问题

Ruby on rails 带有分支的Rails Git迁移问题,ruby-on-rails,ruby,git,cloud9,dbmigrate,Ruby On Rails,Ruby,Git,Cloud9,Dbmigrate,还是个新手。我正在为RoR应用程序开发一个新功能。我创建了一个本地分支并生成了一个迁移。不幸的是,我没有将更改保存到迁移文件,然后运行db:migrate。想要重新开始,我切换回master并从git重新启动,并使用以下命令进行硬重置(我从未在本地或远程提交分支中的文件): 然后我重新创建了一个本地分支,重新创建了迁移(这次正确),并运行了db:migrate。我得到一个错误,即数据库中已经存在该表,但是,当我在schema.db中查找时,该表不存在 我只想回到基于远程git的地方。值得一提的是

还是个新手。我正在为RoR应用程序开发一个新功能。我创建了一个本地分支并生成了一个迁移。不幸的是,我没有将更改保存到迁移文件,然后运行db:migrate。想要重新开始,我切换回master并从git重新启动,并使用以下命令进行硬重置(我从未在本地或远程提交分支中的文件):

然后我重新创建了一个本地分支,重新创建了迁移(这次正确),并运行了db:migrate。我得到一个错误,即数据库中已经存在该表,但是,当我在schema.db中查找时,该表不存在


我只想回到基于远程git的地方。值得一提的是,我正在AWS上使用Cloud9进行开发。谢谢

当您更改git时,与数据库无关。一旦您运行rake任务(如
rake db:migrate
)进行数据库更改,它将在更改分支后自动恢复,您必须准备回滚步骤。(因为迁移中的关闭方法是按常规运行的)

您的旧迁移版本与新重新创建的迁移版本不同,所以应用程序尝试运行迁移文件而不检查表是否存在

每当您在中为特定数据库运行
rakedb:migrate
时,它会将迁移版本存储在数据库中的
schema_migrations
表中。所以一次又一次地调用同一个rake不会试图创建具有相同名称的表。在上述情况下,您有不同的迁移文件来创建相同的表,而
schema\u migration
table不知道您是使用旧迁移文件删除了分支,还是表已经存在

所以在rails控制台中运行以下命令

ActiveRecord::Migration.drop_table :table_name

然后运行您的
rakedb:migrate

当您更改git时,与数据库无关。一旦您运行rake任务(如
rake db:migrate
)进行数据库更改,它将在更改分支后自动恢复,您必须准备回滚步骤。(因为迁移中的关闭方法是按常规运行的)

您的旧迁移版本与新重新创建的迁移版本不同,所以应用程序尝试运行迁移文件而不检查表是否存在

每当您在中为特定数据库运行
rakedb:migrate
时,它会将迁移版本存储在数据库中的
schema_migrations
表中。所以一次又一次地调用同一个rake不会试图创建具有相同名称的表。在上述情况下,您有不同的迁移文件来创建相同的表,而
schema\u migration
table不知道您是使用旧迁移文件删除了分支,还是表已经存在

所以在rails控制台中运行以下命令

ActiveRecord::Migration.drop_table :table_name

然后运行您的
rake db:migrate

只需删除错误的表,更新后的迁移将创建正确的表。迁移文件是否仍存在于您的本地计算机中?运行rake db:MigrateJ时生成的任何添加列日志都必须删除错误的表,更新的迁移将创建正确的表。迁移文件是否仍存在于本地计算机中?运行rake db:migrate时生成的任何添加列日志