我试图插入远程mysql数据库。我能够正确连接,并可以查询'选择'没有问题。但是,我无法执行插入到我可以从中选择的同一个表中。我怀疑它与我的绑定有关,但这与我用来获取sqlite3的工作几乎完全相同,我认为它使用相同的Arel来插入。使用Mysql2的Ruby SQL插入宝石
@result = @db.query("insert into lead_to_processes (case_number, style_of_case) values (?,?)", [
self.case_number.to_blob.force_encoding("UTF-8"),
self.style_of_case.to_blob.force_encoding("UTF-8")
]
)
最终目标是能够从模型内部查询远程数据库并向其中插入数据。我尝试过使用Octopus,但这并不奏效,因为这些表格将与数据库不同。
我在数据库上拥有此用户的完全权限。
所以从如下指导意见我改变了语法和我得到一个不同的错误
Mysql2 ::错误:你在你的SQL语法错误;
但是我做的查询现在这个样子
@db = Mysql2::Client.new(connectionstring)
@case_number = @db.escape(self.case_number)
@style_of_case = @db.escape(self.style_of_case)
@db.query("insert into lead_to_processes (case_number, style_of_case) VALUES
(#{@case_number}, #{@style_of_case})
任何意见或指导?我也试着用''封装我插入的变量
你得到任何错误?你可以发布他们吗?你有写数据库的权限吗?或只读? – Mischa 2013-04-09 13:24:37
我不相信mysql2 gem提供了对查询的绑定,你必须自己创建有效的SQL来传递给查询。 https://github.com/brianmario/mysql2 – mguymon 2013-04-09 13:35:40
你能粘贴抛出的异常吗? – Egalitarian 2013-04-09 13:39:19