Как использовать exec_query или exec_update с MySQL и PostgreSQL - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь использовать запрос подготовить оператор для MySQL и PostgreSQL

Следующий код работает для PostgreSQL

connection = ActiveRecord::Base.connection
query = 'UPDATE stores SET key = $1 WHERE id = $2'
connection.exec_query(query, "SQL", [[nil, 'x'], [nil, 1]]) 

Но когда я переключаю базу данных и запрос на следующий

query = 'UPDATE stores SET key = (?) WHERE id = (?)'
connection.exec_query(query, "SQL", [[nil, 'x'], [nil, 1]])

Получение следующей ошибки

ActiveRecord :: StatementInvalid: Mysql2 :: Ошибка: в синтаксисе SQL имеется ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с '?) WHERE id = (?)' в строке 1: «UPDATE сохраняет SET key = (?) WHERE id = (?) '

Версии Gem:

gem 'mysql2', '0.4.5'
gem 'pg', '0.18.2'
gem 'rails', '5.1.4'

Как я могу использовать оператор prepare, который будет работать как с MySQL, так и с PostgreSQL с ActiveRecord?

1 Ответ

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

Я думаю, вы должны попробовать вот так

exec_query('your query', name = 'SQL', binds = [[nil, 'x'], [nil, 1]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...