我试图在
ruby中使用pg gem中的预处理语句.这就是我的陈述的样子
conn.prepare("insert_values","insert into " + objectName + "(" + headerStr + ") values (" + prep_values + ")") conn.exec_prepared("insert_values",arr)
我一直在收到错误
准备好的语句insert_values已经存在.
我该如何解决??谢谢
解决方法
尝试运行:
conn.exec("DEALLOCATE name_of_prepared_statement")
在你的例子中:
conn.exec("DEALLOCATE insert_values")
简单的测试,它在我的irb工作:
1.8.7 :001 > require 'rubygems' => true 1.8.7 :002 > require 'pg' => true 1.8.7 :003 > conn = PGconn.connect(:host => 'localhost',:port => 5912,:user => 'test',:dbname => 'test' ) => #<PGconn:0x7fe6ac703970> 1.8.7 :005 > conn.prepare("insert_values","select * from data where id < $1") => #<PGresult:0x7fe6ac6b2e58> 1.8.7 :006 > conn.prepare("insert_values","select * from data where id < $1 and id > $2") PGError: ERROR: prepared statement "insert_values" already exists from (irb):6:in 'prepare' from (irb):6 1.8.7 :007 > conn.prepare("insert_values","select * from data where id < $1") PGError: ERROR: prepared statement "insert_values" already exists from (irb):7:in 'prepare' from (irb):7 1.8.7 :008 > conn.exec("DEALLOCATE insert_values") => #<PGresult:0x7fe6ac6738c0> 1.8.7 :009 > conn.prepare("insert_values","select * from data where id < $1") => #<PGresult:0x7fe6ac665fe0> 1.8.7 :010 > conn.exec_prepared("insert_values",[200]) => #<PGresult:0x7fe6ac65d188> 1.8.7 :011 > conn.exec("DEALLOCATE insert_values") => #<PGresult:0x7fe6ac654df8> 1.8.7 :012 > conn.exec_prepared("insert_values",[200]) PGError: ERROR: prepared statement "insert_values" does not exist from (irb):12:in 'exec_prepared' from (irb):12
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。