我正在尝试为mysql和postgresql使用prepare语句查询
以下代码适用于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::error:您的sql语法有错误;请查看与您的mysql服务器版本对应的手册,在第1行的“?)where id=(?)”附近使用正确的语法:“update stores set key=(?)where id=(?)”
gem版本:
gem 'mysql2', '0.4.5'
gem 'pg', '0.18.2'
gem 'rails', '5.1.4'
如何使用prepare语句,它将同时适用于mysql和postgresql以及activerecord?
2条答案
按热度按时间3zwjbxry1#
我想你应该这样试试
8yoxcaq72#
我仍然在想,是否有一种方法可以像postgres适配器那样简单。同时你可以先
prepare
然后execute
: