Rails-SQLite3 :: SQLException:在“ USING”附近:语法错误

罗伯

我最近将应用程序部署到了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列中,但是我不知道如何解决该问题?

欧文·布兰德斯特(Erwin Brandstetter)

如果我理解正确,则说明您正在使用SQLite进行开发,但正在Heroku上部署到Postgres

就是问题所在。解决方案是在本地也使用Postgres进行开发。最好与相同的版本。SQL实现之间存在许多差异,一旦您使用除基本DML命令以外的任何其他方法,您就会遇到障碍。

什么等价SQLite中这样PostgreSQL的DDL命令:

ALTER TABLE orders ALTER cancel TYPE boolean USING CAST(cancel AS boolean);

SQLite的实现ALTER TABLE非常有限。每个文档:

SQLite支持ALTER TABLE的有限子集。SQLite中的ALTER TABLE命令允许用户重命名表或向现有表添加新列。

对于表模式的所有其他更改,SQLite手册中有一个配方。

相关答案:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

“ SQLite3 :: SQLException:在“。”附近:语法错误”是什么意思?

sqlite3:在“附近”。:语法错误

SQLException:错误:“ \”处或附近的语法错误

OperationalError:“%”附近:Python中的sqlite3语法错误

如何修复 SQLite3::SQLException: near "to": 语法错误:SELECT "".* FROM "" WHERE ""."" = ?AND (to < '[Time.now]') LIMIT ?抵消?

SQLite语法错误附近“?”

Rails关联:SQLite3 :: SQLException:没有这样的列

sqlite3.OperationalError:“ WHERE”附近:语法错误(Python 2,sqlite3)

Python SQlite3 更新函数,sqlite3.OperationalError:“WHERE”附近:语法错误

java.sql.SQLException:在“ on”附近:语法错误问题

java.sql.SQLException:“.”附近:语法错误

sqlite3,python,CREATE TABLE-在“ /”附近:语法错误

Android SQLite:SQLiteException:在“?”附近 语法错误

语法错误android sqlite:在“组”附近

SQLite if条件-在“ CASE”附近:语法错误

SQLite CREATE TABLE [在“”附近:语法错误]

LIKE子句附近的SQLite语法错误

“ @domain” SQLite附近的语法错误

“ s”附近的SQLite Exception语法错误

“AUTOINCREMENT”附近的 SQLite 语法错误

迁移错误:SQLite3 :: SQLException:没有这样的表:main.users

Python2.7 - SQLite3 库输出错误消息“sqlite3.OperationalError:附近“?”:语法错误”

由于ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:无法回滚,Rails delay_job无法正常工作

Rails 4-Heroku Sqlite3错误

如何使用Rails和ruby修复sqlite3错误

Rails服务器Gem加载错误-SQlite3

SQLITE3错误:格式错误的数据库架构(is_transient)-在“ where”附近:语法错误

sqlite3.OperationalError:“BatchID”附近:语法错误

sqlite3.OperationalError:在“ s”附近:语法错误