我正在尝试对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服务器版本对应的手册,了解要使用的正确语法。其中id = (?)‘在第1行:'UPDATE store SET key = (?) WHERE id = (?)‘
Gem版本:
gem 'mysql2', '0.4.5'
gem 'pg', '0.18.2'
gem 'rails', '5.1.4'如何在ActiveRecord中使用对MySQL和PostgreSQL都有效的prepare语句?
发布于 2018-12-21 19:20:55
我觉得你应该试试这样
exec_query('your query', name = 'SQL', binds = [[nil, 'x'], [nil, 1]])发布于 2021-03-17 22:55:28
对于MySQL,您可以使用raw_connection准备语句,然后执行该语句:
st = ActiveRecord::Base.connection.raw_connection.prepare(
'UPDATE users SET slug = ? WHERE id = ?'
)
st.execute(username.parameterize, id)
st.closehttps://stackoverflow.com/questions/53880925
复制相似问题