LOAD DATA LOCAL INFILE使用mysql2 gem导致格式错误的数据包错误

LOAD DATA LOCAL INFILE使用mysql2 gem导致格式错误的数据包错误,第1张

概述我正在尝试发出一个LOAD DATA LOCAL INFILE查询,使用rails 3.1.1下的mysql2 gem(0.3.11)将一些CSV数据加载到表中:class Foo < ActiveRecord::Base def self.load_csv query = 'LOAD DATA LOCAL INFILE 'test/foo

我正在尝试发出一个LOAD DATA LOCAL INfile查询,使用rails 3.1.1下的mysql2 gem(0.3.11)将一些CSV数据加载到表中:

class Foo < ActiveRecord::Base  def self.load_csv    query = "LOAD DATA LOCAL INfile 'test/foo.csv' REPLACE INTO table foos lines TERMINATED BY '\n' (Title)"    ActiveRecord::Base.connection.execute(query)  endend

(这是一个重现this github issue错误的示例应用程序).这在OS X(lion)上出现故障,并出现以下错误:

MysqL2::Error: Malformed packet: LOAD DATA LOCAL INfile 'test/foo.csv' REPLACE INTO table foos lines TERMINATED BY '' (Title)

服务器上启用了本地infile:

MysqL> show variables where variable_name like '%local%';+---------------+-------+| Variable_name | Value |+---------------+-------+| local_infile  | ON    |+---------------+-------+

并在application.rb上通过此指令在客户端上:

MysqL2::ClIEnt.default_query_options[:connect_flags] |= MysqL2::ClIEnt::LOCAL_fileS

从MysqL客户端可以正常运行相同的LOAD语句.将数据库连接方法从套接字更改为TCP / IP没有任何区别. MysqL是通过自制软件安装的,版本是

MysqL  Ver 14.14 distrib 5.5.15,for osx10.7 (i386) using readline 5.1

我不会在linux下运行相同的代码时出现此错误.如果省略LOCAL修饰符,它也可以工作,但这不是一个选项,因为该文件实际上是生产本地和数据库服务器远程.它与this问题中的文件权限无关.

这让我疯狂,任何见解都非常感激.

最佳答案问题应该修复为MysqL2 v> 0.3.12b4

它对我使用LOCAL_file标志不起作用,但添加:local_infile =>选项的确如此

1.9.3p194 :011 > a = MysqL2::ClIEnt.new(:username=>'root',:host=>'localhost',:password=>'',:database=>'bhl_indexer',:local_infile => true)

https://github.com/brianmario/mysql2/issues/293 总结

以上是内存溢出为你收集整理的LOAD DATA LOCAL INFILE使用mysql2 gem导致格式错误的数据包错误全部内容,希望文章能够帮你解决LOAD DATA LOCAL INFILE使用mysql2 gem导致格式错误的数据包错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1168558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存