【发布时间】:2023-04-02 08:53:01
【问题描述】:
我有一个专栏叫“奖品”:
create_table :contests do |t|
t.text :prize
我最近意识到这将始终是一个整数,我想设置一个默认值:
def change
change_column :contests, :prize, :integer, :default => 200
这在我使用 MySQL DB 的本地机器上运行良好。但是,当我推送到我的生产站点(托管在 Heroku 上,它为我提供 Postgres DB)时,我收到以下错误:
PGError: ERROR: column "prize" cannot be cast to type "pg_catalog.int4"
: ALTER TABLE "contests" ALTER COLUMN "prize" TYPE integer
在这篇文章中:http://www.postgresonline.com/periodical.php?i_id=3 他们讨论了使用 USING 来解决这个问题。但我不知道我该怎么做,以及这是否适合我正在尝试做的事情。
非常感谢您对解决此问题的任何见解。
谢谢! 林哥
【问题讨论】:
-
只有当奖品列中的所有值都可以转换为整数时,您的代码才能工作,另请参阅this answer
-
您是否有任何理由不使用与生产相同的数据库进行开发?
标签: mysql ruby-on-rails ruby postgresql activerecord