尝试运行迁移时出错
WARNING: you don't own a lock of type ExclusiveLock
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
迁移看起来像
def up
ActiveRecord::Base.establish_connection
ActiveRecord::Base.connection.execute(
File.read(File.expand_path('setup.sql'))
)
change_column :staff_members, :id, :integer, auto_increment: true
end
sql文件分支到不同的数据库,这个特定的表需要重新定义它的id列。
答案 0 :(得分:1)
我发现的解决方案是手动关闭连接 @Component({
....
animations: [
trigger('panelInOut', [
transition('void => *', [
style({transform: 'translateY(-100%)'}),
animate(800)
]),
transition('* => void', [
animate(800, style({transform: 'translateY(-100%)'}))
])
])
]
})
答案 1 :(得分:0)
我有同样的问题,但在不同的情况下。
我编写了一个通用的rake任务,它允许我运行任何SQL脚本文件,并发现在直接运行rake任务时它可以正常工作,但如果作为迁移的一部分运行则会失败,从而导致ExclusiveLock警告和OP报告的错误。
我尝试在rake任务中明确关闭连接,但这并没有为我解决问题。
最后,通过一些额外的日志记录,我发现连接已经建立,并且我不需要在该上下文中明确地建立它(我最初有想法从this SO question开始) 。我的环境:Ruby 2.3.4上的Rails 5.1.4
删除ActiveRecord::Base.establish_connection
调用解决了我的问题,我的rake任务现在可以在迁移内部或外部愉快地运行。
我稍后注意到PG::ConnectionBad: connection is closed: ROLLBACK
和PG::ConnectionBad: connection is closed: COMMIT
错误在查看某些日志时,但这些错误可能是由显式关闭连接引起的(看起来迁移会尝试COMMIT但由于连接失败而失败关闭,然后尝试ROLLBACK但由于同样的原因失败了。)