我放了一张桌子想要创建一个新桌子 - 但我不想丢失我的其他桌子

时间:2017-03-28 09:40:10

标签: ruby-on-rails rake

这可能非常简单/明显,但我是新手 -

我有一个包含一些表的数据库,让我们说tA,tB和tC。在迁移中我删除了tC,因为在那时我需要在不同的分支上工作。但是,我现在正在一个需要tC存在的项目中的分支上工作。

此分支上存在用于创建所有表的迁移。

如果tC为空,我不在乎。但是如果我运行£0.55 ,它会重新创建所有表吗?因为我不想丢失其他表中的数据,tA& TB。

TL; DR - 如何创建一个表(我在之前的创建中删除)而不重新创建(并丢失数据)我没有删除的表?

2 个答案:

答案 0 :(得分:1)

你是怎么放弃桌子的?是通过控制台/命令行吗?如果是,那么要重新创建tC表,您有两个选择:

  1. 创建一个新的迁移文件,仅创建表tC(最佳和最简单的修复)

    bundle exec rails g migration CreateTableTC
    
  2. 然后使用此条件语句添加新迁移:

        unless table_exists?(:table_tC)
          create_table :table_tC do |t|
            ........
          end
        end
    

    然后在终端上运行此命令:

        bundle exec rake db:migrate
    

    如果您的数据库没有,那么这将创建表tC,不会删除其他表上的数据,如果您的数据库有表tC,则不会执行

    1. 对您的数据库使用GUI(如果您使用的是postgres,则可以使用PgAdmin)

答案 1 :(得分:0)

这是我最终做的事情:使用Rails控制台,我只是再次运行创建该特定表的迁移。请参阅此问答:Run a single migration file