Oni*_*shi 6 postgresql ruby-on-rails heroku
我正在使用Heroku上托管的Rails 5.1,我使用以下命令来迁移我的数据库:
heroku run rake db:migrate -a [my app name]
所有迁移本身都正确完成:
SQL (1.6ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) RETURNING "version" [["version", "20180504164326"]]
(2.1ms) COMMIT
Migrating to AddPinToStaff (20180519024721)
(1.5ms) BEGIN
== 20180519024721 AddPinToStaff: migrating ====================================
-- add_column(:staff, :pin_number, :string)
(4.2ms) ALTER TABLE "staff" ADD "pin_number" character varying
-> 0.0045s
== 20180519024721 AddPinToStaff: migrated (0.0046s) ===========================
Run Code Online (Sandbox Code Playgroud)
这是我创建的最后一个迁移文件,所以这一切似乎都有效.然后,这运行:
SQL (1.6ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) RETURNING "version" [["version", "20180519024721"]]
(2.4ms) COMMIT
ActiveRecord::InternalMetadata Load (1.7ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]]
(1.3ms) BEGIN
SQL (1.6ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "key" [["key", "environment"], ["value", "beta"], ["created_at", "2018-06-04 18:54:24.766405"], ["updated_at", "2018-06-04 18:54:24.766405"]]
(2.1ms) COMMIT
(1.4ms) SELECT pg_advisory_unlock(5988010931190918735)
Run Code Online (Sandbox Code Playgroud)
它在最后一个SELECT语句中挂起.是什么pg_advisory_unlock
,为什么它运行?阅读这篇博文似乎应该从我的应用程序中调用它们,但我在我的应用程序中找不到任何类似的文本.请帮忙!
pg_advisory_unlock
只是 Heroku 用来获取数据库事务级锁的 postgresql 锁。如果 Heroku 无法获取锁,则迁移本身不一定会成功。请检查您的架构是否包含迁移的表,如果是,则无需执行任何操作。编辑:您的日志显示迁移已提交,这强烈表明迁移确实成功。
否则,您可以尝试删除数据库并重新创建它,然后再次运行迁移。如果它已包含重要数据,请用于heroku pg:backups:capture --app <name-of-app>
备份数据库,然后运行rails db:drop
、rails db:create
、最后,rails db:migrate
以便再次运行迁移。您可以使用以下命令恢复数据库heroku pg:backups:restore <name-of-backup> --app <name-of-app>
归档时间: |
|
查看次数: |
551 次 |
最近记录: |