![](/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.