在Ruby on Rails中从Sqlite到Postgresql的迁移

时间:2018-12-03 06:32:49

标签: ruby-on-rails postgresql sqlite

当前应用程序我们正在使用sqlite数据库,现在我们必须从sqlite迁移到Postgresql。我已经使用以下续集进行迁移了

续集-C sqlite://db/development.sqlite3 postgres:// username:password @ localhost / dbname

迁移后,我面临如下语法错误

SELECT COUNT(*) FROM "devices" WHERE  (User_id IS 6 AND mac_address IS "88:83:123:31:68")

ActiveRecord :: StatementInvalid(PG :: SyntaxError:ERROR:语法错误等于或接近“ 6” 第1行:...在“设备”中的ECT COUNT(*)(User_id为6和mac ..)

我的控制器我已经在下面的查询中使用了以上语法

 @device_by_user = Device.where("User_id IS #{id} AND mac_address IS \"#{mac}\"")

对于PostgreSQL,要求以下查询语法,其中以大写字母开头的字段名称用引号引起来,文本值应该用单引号引起来。

SELECT COUNT(*) FROM "devices" WHERE "User_id"=6 AND mac_address= '88:83:123:31:68';

我需要在适用的地方更改语法吗?还是在Rails中还有其他方法可用?

谢谢, 亚历克斯

1 个答案:

答案 0 :(得分:0)

您应该能够:

Device.where({ :user_id => 6, :mac_address => '88:83:123:31:68'}).count

如果模型正确,它应该可以工作。 希望有帮助