Миграция Sqlite в Postgresql в Ruby on Rails - PullRequest
0 голосов
/ 03 декабря 2018

В текущем приложении мы используем базу данных sqlite, и теперь нам нужно перейти с sqlite на Postgresql. Я мигрировал с помощью сиквела, как показано ниже

sequel -C sqlite: //db/development.sqlite3 postgres: //имя пользователя: пароль @ localhost / имя_базы

После миграции я сталкиваюсь с синтаксической ошибкой, как показано ниже

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

ActiveRecord :: StatementInvalid (PG :: SyntaxError: ОШИБКА: ошибка синтаксиса на уровне или близко к нему "6"LINE 1: ... ECT COUNT (*) FROM" устройства "WHERE (User_id IS 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';

Нужно ли менять синтаксис везде, где это применимо?или в рельсах есть другой подход?

Спасибо, Алекс

1 Ответ

0 голосов
/ 03 декабря 2018

Вы должны уметь:

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

Это должно работать, если ваша модель верна.Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...