删除架构迁移Ruby on Rails sqlite3

时间:2011-04-20 04:46:44

标签: ruby-on-rails ruby sqlite

所以我是愚蠢的并删除了我的sqlite3数据库的schema_migration中的所有行。我该如何解决?我是否销毁了我的整个项目?

3 个答案:

答案 0 :(得分:2)

您是否也删除了db \ schema.rb或db \ migrate文件?

在第一种情况下,您可以尝试将db文件移动到其他位置并执行:

rake db:migrate

如果删除了schema.rb和迁移文件,则可以执行

rails generate migration

并手动重新创建迁移。

答案 1 :(得分:1)

只要你不需要再次运行rake db:migrate,你就可以了。否则你会遇到问题。

我可能应该在Ruby中这样做,但我对Perl更熟悉 - 所以这里有一个快速的脚本,可以帮助你恢复schema_migrations表

!#/usr/bin/perl

opendir(DH, 'path/to/rails/app/db/migrate');

while($filename = readdir(DH))
{
    next unless $filename =~ /\.rb$/;
    @parts = split("_", $filename);
    print "INSERT INTO schema_migration VALUES (" . $parts[0] . ");\n";
}

运行脚本将为您提供一系列插入语句,然后可以将其复制并粘贴到sqllite命令行工具中

答案 2 :(得分:0)

或者您可以杀死数据库并重新启动

rake db:drop; rake db:migrate; rake db:test:prepare