gpt4 book ai didi

ruby-on-rails - 尝试 db :migrate inside of heroku, 迁移失败

转载 作者:行者123 更新时间:2023-11-29 14:31:08 26 4
gpt4 key购买 nike

所以我在我的 Rails 项目中有这个迁移:

class CreateSettings < ActiveRecord::Migration[5.2]
def change
create_table :settings do |t|
t.string :frequency
t.text :emails, array: true, default: [].to_yaml
t.integer :reorder

t.timestamps
end
end
end

默认值最初是失败的,所以我创建了另一个迁移以删除该默认值:

class ChangeDefaultColumnForSetting < ActiveRecord::Migration[5.2]
def change
change_column_default(:settings, :emails, nil)
end
end

模式现在看起来不错,默认值消失了,但是当我将它推送到 Heroku 并运行 heroku run rails db:migrate 时,它在原始 CreateSettings 迁移,因为它仍然包含默认值。即使我从第一次迁移中手动删除该默认值,我也会在 Heroku 中收到“预期 1 个参数但得到 0”错误。

关于我如何解决这个问题有什么想法吗?迁移在开发中有效,所以它一定只是一个 Postgres 问题(因为我在开发中使用 SQLite)。

最佳答案

快速修复是删除 ChangeDefaultColumnForSetting 迁移并编辑 CreateSettings 以说:

t.text :emails, array: true, default: []

t.text :emails, array: true, default: nil

然后提交更改并推送到 Heroku。

之后,如果您要在 PostgreSQL 上部署,您真的希望停止使用 SQLite。在 SQLite 之上开发并在 PostgreSQL 上部署会导致各种问题。您确实需要使用同一个数据库进行开发、测试和部署。帮自己一个大忙,在本地安装 PostgreSQL,这样您就可以使用与部署时相同的数据库进行测试和开发。

或者,您可以在迁移中查看 Rails.env 并在不同的环境中运行不同的代码。但实际上,这是个坏主意。

关于ruby-on-rails - 尝试 db :migrate inside of heroku, 迁移失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51756867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com