所以我是愚蠢的并删除了我的sqlite3数据库的schema_migration中的所有行。我该如何解决?我是否销毁了我的整个项目?
答案 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