【发布时间】:2013-03-31 22:14:56
【问题描述】:
我正在尝试插入远程 mysql 数据库。我能够正确连接并且可以从中查询“选择”没有问题。但是,我无法在可以从中选择的同一个表中执行插入操作。我怀疑它与我的绑定有关,但这与我用来让 sqlite3 工作的方法几乎相同,我认为它使用相同的 Arel 插入。
@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,但效果不佳,因为表与数据库不同。
我对该用户拥有数据库的完全权限。
因此,根据 cmets 的指导,我更改了语法并得到了不同的错误
Mysql2::Error: 你的 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})
有什么想法或指导吗?我也试过用 '' 封装我要插入的变量
【问题讨论】:
-
您有任何错误吗?你能把它们贴出来吗?你有那个数据库的写权限吗?还是只读?
-
我不相信 mysql2 gem 为查询提供绑定,您必须自己创建有效的 SQL 才能传递给查询。 github.com/brianmario/mysql2
-
你能粘贴抛出的异常吗?
-
TypeError: can't convert Array into Hash
-
你不需要
[]摆脱它们
标签: mysql ruby-on-rails ruby-on-rails-3 mysql2