【发布时间】:2014-09-19 20:20:38
【问题描述】:
我最近将我的应用程序部署到 Heroku,因此我必须对其中一张表中的几列进行一些修改。具体来说,我做了以下事情:
class ChangeCancelColumnOrders < ActiveRecord::Migration
def change
change_column :orders, :cancel, 'boolean USING CAST(cancel AS boolean)'
end
end
I.E.我添加了'boolean USING CAST(cancel AS boolean)' 部分,因为尝试执行heroku run rake db:migrate 时出现此错误:
PG::DatatypeMismatch: ERROR: column "cancel" cannot be cast automatically to type boolean
此问题已得到修复,Heroku 上一切正常。
现在的问题是,当我尝试在本地运行 rake db:migrate 时,出现以下错误:
SQLite3::SQLException: near "USING": syntax error:
CREATE TABLE "orders" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "created_at" datetime, "updated_at" datetime, "first_name" varchar(255), "last_name" varchar(255), "email" varchar(255), "address_1" varchar(255), "address_2" varchar(255), "city" varchar(255), "postal_code" varchar(255), "country_code" varchar(255), "shipped_date" date, "total_price" integer, "shipped" boolean DEFAULT 'f', "cancel" boolean USING CAST(cancel AS boolean) DEFAULT 'f', "cancel_date" date)
我可以看到boolean USING CAST(cancel AS boolean) 已添加到cancel 列,但我不知道如何解决这个问题?
【问题讨论】:
-
这是您希望开发和生产数据库具有相同风格的完美示例。既然你不能改变heroku使用PG的事实,那么你也应该把你的开发数据库改为PG。
-
@james 你最终做了什么来解决这个问题?我也有同样的问题。
标签: ruby-on-rails postgresql heroku sqlite