[英]Rails 4.2 Postgres 9.4.4 statement_timeout doesn't work
[英]Rails db:drop in postgres doesn't work
我在刪除數據庫中的表時遇到麻煩。 我最近將數據庫從SQLite更改為Postgres 9.3,並且重新創建數據庫的准備rake任務不起作用-db:drop不會刪除數據庫,也沒有與當前活動的postgres的連接(會話),並且沒有錯誤日志(啟用--trace)。 我的瑞克任務看起來像這樣:
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:
添加default:
或development:
postgres數據庫: database: your_db_name
希望這可以...
當仍然有活動的連接時,Postgres將不允許您刪除數據庫。
要斷開所有連接,請運行
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname = current_database()
AND pid <> pg_backend_pid();
也可以看看:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.