gpt4 book ai didi

ruby-on-rails - rails 数据库 :drop in postgres doesn't work

转载 作者:行者123 更新时间:2023-11-29 12:05:01 25 4
gpt4 key购买 nike


我在删除数据库中的表时遇到问题。我最近将数据库从 SQLite 更改为 Postgres 9.3,我重新创建数据库的准备 rake 任务不起作用 - db:drop 不会删除数据库,也没有与当前事件的 postgres 的连接( session )并且没有错误日志(打开--trace)。我的 rake 任务如下所示:

task prepare_all: :environment do
puts "==== PREPARING DATABASE ===="
Rake::Task["db:drop"].invoke()
Rake::Task["db:create"].invoke()
Rake::Task["db:migrate"].invoke()
Rake::Task["db:populate"].invoke()
Rake::Task["db:codetables_populate"].invoke()
Rake::Task["db:geocode"].invoke()
puts "==== DATABASE PREPARED ===="
end

但它失败了,因为数据库没有被删除,数据仍然存在,当我填充数据库时,由于电子邮件验证(电子邮件已经存在),第一次插入失败。当我尝试使用跟踪手动运行任务 db:drop 时,输出如下:

bundle exec rake db:drop RAILS_ENV=development --trace
DL is deprecated, please use Fiddle
** Invoke db:drop (first_time)
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:drop

当我查看数据库时,所有表都充满了数据。我正在使用 Postgres 9.3(在 Windows 7 上)。在将数据库更改为 Postgres 后,此行为不会立即发生,它起初有效,但比我尝试手动编辑现有的迁移文件(并更改它们的名称以强制执行)并且所有都停止工作。当我手动删除表时,任务完成,但第二次...当然再次失败,因为 db:drop 什么都不做。

有没有人知道如何让它再次工作?提前致谢。

编辑:
最后,我最终使用直接 SQL 删除表,但我不想使用特定于数据库的代码,所以我仍然对答案感兴趣,当前代码:

task prepare_all: :environment do
puts "==== PREPARING DATABASE ===="
# Rake::Task["db:drop"].invoke()
ActiveRecord::Base.connection.execute("DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;
COMMENT ON SCHEMA public IS 'standard public schema';")
Rake::Task["db:create"].invoke()
Rake::Task["db:migrate"].invoke()
Rake::Task["db:populate"].invoke()
Rake::Task["db:codetables_populate"].invoke()
Rake::Task["db:geocode"].invoke()
puts "==== DATABASE PREPARED ===="
end

最佳答案

我最近在快速创建一个新的 Rails 项目后遇到了这个问题。

简短的解决方法 - 运行 rake db:rollback STEP=100

可能的原因?您的 database.yml 文件未指定数据库。请务必添加 default:development: 您的 postgres 数据库:database: your_db_name

希望这行得通...

关于ruby-on-rails - rails 数据库 :drop in postgres doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28127850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com