- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
rake db:migrate
在 sqlite3
中本地工作,但在 heroku 中的 postgresql
中不起作用。
错误
PG::UndefinedTable: ERROR: relation "musicians" does not exist
: ALTER TABLE "orders" ADD CONSTRAINT "fk_rails_ad134589be"
FOREIGN KEY ("musician_id")
REFERENCES "musicians" ("id")
(0.9ms) ROLLBACK
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::UndefinedTable: ERROR: relation "musicians" does not exist
: ALTER TABLE "orders" ADD CONSTRAINT "fk_rails_ad134589be"
FOREIGN KEY ("musician_id")
这里是整个日志的链接:https://gist.github.com/helloravi/2cb69e0927e63e186b09
以下是未执行的迁移。错误显示在迁移代码下方
class CreateAlbums < ActiveRecord::Migration
def change
create_table :albums do |t|
t.string :album_name
t.references :musician, index: true, foreign_key: true
t.timestamps null: false
end
add_foreign_key :albums, :users, column: :musician_id
end
end
我有一个用户表,其中有一个 bool 值的音乐家列(一些用户是音乐家)
我什至尝试使用 add_foreign_key
但我仍然无法弄清楚问题是什么。
我尝试了 rake db:schema:load
并且成功了。我希望能够使 rake db:migrate
工作,因为我需要能够在生产中迁移。
最佳答案
SQLite 不检查外键,它只是忽略它们。但是 PostgreSQL 非常严格,当外键约束无效时会引发错误。
rails foreign_key不支持你想要它做什么。当您编写 t.references :musician
时,必须有一个 musicians
表。但是您希望外键指向 users
表。
我看到两个选项:
使用 t.references :users
并在您的 albums.rb
中重命名该关联,如下所示:
belongs_to :musician, class_name: 'User', foreign_key: 'user_id'
或者:您只需使用 t.integer :musician_id
而不是 references
并使用 execute 'ALTER TABLE 手动定义外键约束。 ..'
关于ruby-on-rails - PG::UndefinedTable: 错误:关系 "musicians"不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35359029/
rake db:migrate 在 sqlite3 中本地工作,但在 heroku 中的 postgresql 中不起作用。 错误 PG::UndefinedTable: ERROR: relati
我是一名优秀的程序员,十分优秀!