![](/img/trans.png)
[英]ruby on rails: multiple insertion SQLite3::SQLException: near “,”: syntax error:
[英]Rails - SQLite3::SQLException: near “USING”: syntax error
我最近将我的应用程序部署到 Heroku,这样做时我不得不对我的一个表中的几列进行一些修改。 具体来说,我做了以下事情:
class ChangeCancelColumnOrders < ActiveRecord::Migration
def change
change_column :orders, :cancel, 'boolean USING CAST(cancel AS boolean)'
end
end
IE 我添加了'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
列,但我不知道如何解决这个问题?
如果我理解正确,那么您正在使用SQLite进行开发,但是在 Heroku 上部署到Postgres 。
这就是问题所在。 解决方案是在本地也使用 Postgres 进行开发。 最好用同版本。 SQL 实现中有许多不同之处,一旦使用基本 DML 命令以外的任何其他命令,您就会不断遇到障碍。
在 SQLite 中没有像这个 PostgreSQL DDL 命令这样的等价物:
ALTER TABLE orders ALTER cancel TYPE boolean USING CAST(cancel AS boolean);
ALTER TABLE
的 SQLite 实现非常有限。 根据文档:
SQLite 支持有限的 ALTER TABLE 子集。 SQLite 中的 ALTER TABLE 命令允许用户重命名表或向现有表添加新列。
对于表模式的所有其他更改, SQLite 手册中有一个配方。
相关回答:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.