Ruby on rails &引用;PG::未定义的列:“;部署rails应用程序时
使用Capistrano将我的更改部署到生产时,我收到错误消息Ruby on rails &引用;PG::未定义的列:“;部署rails应用程序时,ruby-on-rails,ruby,postgresql,database-migration,Ruby On Rails,Ruby,Postgresql,Database Migration,使用Capistrano将我的更改部署到生产时,我收到错误消息 PG::UndefinedColumn: ERROR: column "address_id" of relation "member_applications" does not exist 在我的迁移过程中 class CreateAddresses < ActiveRecord::Migration[5.1] def change create_table :addresses do |t|
PG::UndefinedColumn: ERROR: column "address_id" of relation "member_applications" does not exist
在我的迁移过程中
class CreateAddresses < ActiveRecord::Migration[5.1]
def change
create_table :addresses do |t|
t.string :full_name, null: false
t.string :email, null: false
t.string :phone, null: false
t.string :address, null: false
t.string :state, null: false
t.string :country, null: false
t.string :postcode, null: false
t.timestamps
end
end
end
class CreateAddresses
及
class CreateMemberApplications
最后
class SetAddressToNull < ActiveRecord::Migration[5.1]
def change
change_column_null :member_applications, :address_id, true
end
end
class SetAddressToFull
最后一次迁移似乎是导致问题的原因之一。是什么导致了这个问题?它一直在我的开发机器上工作,但自上次部署以来已经有一段时间了。我相信问题就在这里:
create_table :member_applications do |t|
...
t.references :addresses, null: false
...
end
它应该是t.references:address,null:false
单数形式
您可以检查您的
db/schema.rb
进行验证。这就是问题所在。不知何故,我的模式使用了正确的地址。\u id。我永远不知道这是如何发生的,但在修复迁移并使用psql重命名服务器上的列之后,它现在可以找到了。
create_table :member_applications do |t|
...
t.references :addresses, null: false
...
end