所以我很愚蠢,删除了我的sqlite3数据库的schema_migration中的所有行。我该如何解决这个问题?我毁了我的整个项目吗?
发布于 2011-04-20 14:33:49
您是否也删除了db\schema.rb或db\migrate文件?
在第一种情况下,您可以尝试将db文件移动到其他位置并执行:
rake db:migrate如果删除了schema.rb和迁移文件,则可以执行
rails generate migration并手动重新创建迁移。
发布于 2011-04-20 15:50:42
只要您不需要再次运行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";
}运行该脚本将得到一系列insert语句,然后可以将这些语句复制并粘贴到sqllite命令行工具中
发布于 2011-04-20 14:54:17
或者,您可以直接终止数据库,然后重新启动
rake db:drop; rake db:migrate; rake db:test:preparehttps://stackoverflow.com/questions/5725638
复制相似问题