2013-06-01 34 views
3

基本上我不小心写了password_has而不是password_hash,我认为通过rake db:rollback我可以进行适当的更改,然后执行rake db:migrate和rake db:reset,但似乎在mysql中没有发生更改..我不断收到错误..我该怎么办?理想情况下,我想摧毁数据库并重新启动它,但它不会摧毁它,因为当我这样做并尝试重新创建它时,它说它仍然有一个已经创建的副本..我要疯了,请帮助我是一个新手!如何更改导轨3中的列名称?

+0

耙分贝:回滚仅回滚最后一次迁移。显示你的Rake数据库:migrate --trace –

+0

这里你去:new-host-3:shop_app vickenvartanian $ rake db:migrate --trace **调用db:migrate(first_time) **调用环境(first_time) * *执行环境 **调用数据库:load_config(FIRST_TIME) **执行DB:load_config **执行分贝:迁移 **调用数据库:_dump(FIRST_TIME) **执行DB:_dump **调用数据库:模式:转储(first_time) **调用环境 **调用数据库:load_config **执行数据库:模式:转储 –

回答

-1

例如,您可以执行下列SQL:

ALTER TABLE table_name CHANGE prev_column_name new_column_name INTEGER; 
+3

如果您在不写入迁移的情况下将SQL直接键入数据库, ñ应用程序不会有数据库更改 – 2013-06-01 04:50:42

1

我不认为你必须回去摆在首位,只是做一个新的迁移变化的列名。 另外,如果您指定了错误消息,它会很有帮助。

6

您可以编写重命名迁移。产生它为:

rails g migration RenameColumn 

接下来,应用下面的代码中所生成的迁移文件重命名的列:

class RenameColumn < ActiveRecord::Migration 
    def self.up 
    rename_column :table_name, :old_column, :new_column 
    end 

    def self.down 
    # rename back if you need 
    end 
end 

一旦迁移运行,避免回滚修改。写一个新的做,而不是。

如果rake db:migrate是给错误,请尝试运行只需要为一个:

rake db:migrate:up VERSION=20130405061213 

刚刚替补正确的版本(这是在迁移的文件名).X

+0

生成的迁移文件是什么意思?请更清楚,哪些是生成的迁移文件? –

+0

当您运行'rails g migration'命令时,会在您的应用的'db/migrate'目录中生成一个迁移文件。它是在执行'rake db:migrate'时运行的这个文件 –