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

2023-12-23

我正在尝试发出 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)
  end
end

(这是一个示例应用程序,用于重现错误这个 github 问题 https://github.com/brianmario/mysql2/issues/43)。这一直失败在 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

相同的 LOAD 语句在 MySQL 客户端上运行良好。将数据库连接方法从套接字更改为 TCP/IP 没有任何区别。 MySql是通过homebrew安装的,版本是

mysql  Ver 14.14 Distrib 5.5.15, for osx10.7 (i386) using readline 5.1

我在 Linux 下运行相同的代码不会出现此错误。如果我省略 LOCAL 修饰符,它也可以工作,但这不是一个选项,因为该文件实际上在生产中是本地的,而数据库服务器是远程的。它与文件权限无关,如this https://stackoverflow.com/questions/2420140/malformed-packet-error-during-mysql-load-data-local-infile问题。

这让我发疯,非常感谢任何见解。


应该修复 mysql2 v > 0.3.12b4 的问题

使用 LOCAL_FILE 标志对我来说不起作用,但添加:local_infile => true选项成功了

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 https://github.com/brianmario/mysql2/issues/293

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LOAD DATA LOCAL INFILE 导致 mysql2 gem 出现格式错误的数据包错误 的相关文章

  • ActiveAdmin 使用 Devise Rails 登录两次

    我有一个Rails已设置使用的应用程序devise with User模型 我只是添加ActiveAdmin并且它使用单独的型号名称AdminUser 这个新模型也使用了设计 我遇到的问题是 当我去localhost 3000 admin
  • Rails has_many 通过使用 source 和 source_type 为多种类型设置别名

    这是一个示例类 class Company lt ActiveRecord Base has many investments has many vc firms through investments source investor so
  • 如何让我的导航栏出现在 Rails 应用程序的每个页面上?

    目前 我的导航栏位于我的index htm erb 文件中 目前仅在主页上显示 我想知道为了让导航栏出现在我的应用程序的每一页上 必须采取哪些必要步骤 我的导航栏的代码如下所示
  • 使用 HABTM 关系更新复选框的值 -- Rails

    嘿伙计们 我一直在使用 has and belongs to many 与复选框示例的关系Railscast 第 17 集 http railscasts com episodes 17 habtm checkboxes 我遇到了一些问题
  • 如何使用 LDAP 进行 Ruby on Rails 身份验证? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个网络应用程序 并且我有一个使用的身份验证方法bcrypt gem它工作正常 但我想将身份验
  • 如何在配置/初始化程序中使用 YML 值

    我正在努力将 Facebook 集成到我的应用程序中 为此 我使用 koala devise 和omniauth 对于考拉 我有 config facebook yml development app id 123123132123 sec
  • FIND_IN_SET 具有多个值[重复]

    这个问题在这里已经有答案了 我想从数据库字段搜索多个值 以下是我的查询 SELECT FROM tablename WHERE FIND IN SET 12 13 15 15 category id 我如何搜索它对我不起作用 FIND IN
  • 如何在 mysql 或 JDBC 的表中自动插入外键引用?

    我正在使用MySQL 我的问题是如何自动将新添加的行插入外键表中 一个例子可以澄清我的问题 我有两个表 员工 和 薪水 CREATE TABLE Employee emp id int NOT NULL AUTO INCREMENT nam
  • 使用 PHP 将 mysql 值转储到 JSON 文件中

    我正在尝试使用 PHP 从 mysql 数据库生成 JSON 文件 到目前为止 我有
  • java.sql.SQLException:在结果集开始之前[重复]

    这个问题在这里已经有答案了 我已尝试使用以下代码来检索存储在数据库中的图像 我创建了一个名为image db包含一个名为的表image details 该表有两个字段 id and image path两者都是类型mediumblob 我在
  • Rails 3 公司帐户具有许多用户,限制对数据的访问

    我想知道在我的应用程序中构建身份验证 授权的最佳方法 我希望有 许多公司帐户 可能使用子域 帐户有很多用户 用户只能访问自己或具有相同帐户的其他用户创建的记录 我所做的研究提供了许多混合搭配的想法 以奇怪而美妙的方式组合 devise ca
  • 测试驱动开发 - 我应该测试数据库列和索引吗?

    我是 TDD 新手 我发现shouldagem 能够测试数据库实体的列是否存在以及测试其索引 但是否有必要在我的测试套件中包含列和索引的测试 我是否需要担心在开发过程中可能会删除任何列和索引 不要测试数据库列 这只是测试实施 不要测试实现
  • Rails 资产 - 保留许可证注释

    如何防止 Uglifier 删除某些文件中的某些注释 我希望缩小和压缩代码 但我也希望许可注释保持不变 来自 uglifyJS 的文档 nc or no copyright 默认情况下 uglifyjs 将在生成的代码中保留初始评论标记 假
  • Rails 模型中的多个 counter_cache

    我正在学习 Rails 遇到了一个小问题 我正在编写带有任务列表的非常简单的应用程序 因此模型看起来像这样 class List lt ActiveRecord Base has many tasks has many undone tas
  • (Java) 在 Mac OS X 上以编程方式访问“系统根目录”下的 SSL 证书

    我正在编写一个 Java 应用程序 它可以通过远程 Https 站点进行 REST Api 调用 远程站点由受信任的证书签名 它在 Windows 上运行良好 但由于 SSL 证书问题 在 OS X 上运行时遇到问题 我做了一些挖掘 发现原
  • 如何将mysql数据库移动到另一个安装点

    我有一个 MySQL 数据库 它变得越来越大 我想将整个数据库移动到另一个安装点 在那里我有足够的存储空间 我希望传输当前数据 并将新数据保存到新位置 软件堆栈 在 FreeBSD 6 上运行的 MySQL 5 当然其他答案也是有效的 但如
  • MYSQL数据库删除行后需要进行后期优化

    我有一个当前为 10GB 的日志表 它有很多过去两年的数据 我真的觉得目前我不需要那么多 我是否错误地认为在表中保存多年的数据不好 表越小越好 我的桌子都有 MYISAM 引擎 我想删除 2014 年和 2015 年的所有数据 很快我就会删
  • Rails-自定义删除前确认对话框的视图

    要删除 Rails 中的记录 我使用此代码 result of which I get dialog box like this But I wants this dialog box to look like this 有没有办法自定义确
  • PHP strtotime返回Mysql UNIX_TIMESTAMP的不同值

    我在 stackoverflow 上搜索过帖子 发现了一些类似的帖子 但我认为这是一篇不同的帖子 我的 PHP 和 Mysql 服务器的时区全部设置为 UTC 在表中我使用时间戳字段 值为 2010 11 08 02 54 15 我使用这样
  • SQL查询:按字符长度排序?

    是否可以按字符总数对sql数据行进行排序 e g SELECT FROM database ORDER BY data length 我想你想用这个 http dev mysql com doc refman 5 0 en string f

随机推荐

  • Azure 模拟器卡住

    我正在从事 azure WorkerRole 项目VS2015 SDK 2 9 该角色在云中运行良好 但是当我尝试使用 FullEmulator 在本地运行它时 角色无法启动 面料 角色实例 部署29 116 MyComp Engine D
  • PresentModalViewController 使我的应用程序崩溃

    我知道 这是最简单的事情之一 但几天来我一直在努力反对这一点 我过去已经做过很多次了 但由于某种原因 尝试呈现模式视图控制器只会使应用程序崩溃到黑屏 控制台中没有报告任何内容 我希望有人可能遇到过这个问题并提供一些建议 此代码是从 UIVi
  • 如何使用 angular.foreach 比较两个 JavaScript 数组

    我有两个 javascript 对象 var obj1 key1 value1 key2 value2 And var obj2 key1 value1 key2 someOtherValue 正如您所看到的 两个对象之间存在一个差异key
  • 用于在字段级别区分 CSV 文件并将结果输出到 CSV 并保持颜色的工具

    我正在尝试比较 2 个 csv 文件在字段级别的差异 并用颜色编码差异 我尝试了这个命令 git diff color words space x csv y csv 但有两个问题 它将彼此不同的单元格数据放在一起 我不想要这样 我只需要在
  • 创建新工作区

    Modeshape 文档的第 7 1 6 节说 您的应用程序现在可以使用标准 JCR 2 0 API 创建和删除工作区 JCR 2 0 文档说使用 Workspace createWorkspace String name 如何使用本文底部
  • addClass(“test”)给出错误:TypeError:未定义不是函数

    在控制台中我有 myCssClass 0 parentNode li span class myCssClass some text span li 我想为父级添加 css 类span 对于标签 li 我尝试这样 myCssClass 0
  • Android:如何根据设备时区获取默认日期格式

    有没有简单的方法可以根据用户的时区获取默认日期格式 The SimpleDateFormat 给出根据用户区域设置的日期格式 我正在寻找一种场景 需要将提供的日期转换为基于时区的日期格式 例如 用户将其区域设置设置为 中文 并且采用德国时区
  • Java 最小化依赖关系

    我遇到过这样的情况 一小段Java代码有大量依赖的jar 然而 这些 jar 内部的依赖关系非常浅 在大多数情况下 它仅依赖于单个接口的 jar 我不想将所有 jar 与应用程序一起分发 而是只想将特定的类文件分发到它实际使用的 jar 中
  • 记录 JUnit 测试运行所需的时间

    我想记录我的 JUnit 测试以编程方式运行需要多长时间 我在各种测试类中有大量测试 我想了解每个单独的测试方法运行需要多长时间 我可以更改继承结构或以不同方式注释方法 但我希望避免在测试方法本身以及用于设置测试业务逻辑的之前 之后方法中添
  • Git 说是最新的,尽管更改是远程进行的

    使用 git bash 我在我的主分支上工作 推送它并决定我想要实现一个新功能 我为此创建了一个新分支 后来我添加了另一个功能 创建了另一个分支 我测试了所有内容并且它正常工作 所以我决定将所有内容合并到我的主分支 我将两个新分支推送到远程
  • 如何将.plist文件中的数据结构读取到NSArray中

    我正在使用以下内容手动创建数据结构 NSDictionary league1 NSDictionary alloc initWithObjectsAndKeys Barclays Premier League name Premier Le
  • 如何从路径中删除 Microsoft.PowerShell.Core\FileSystem::\\

    我正在使用 powershell 与文件夹及其所有子文件夹进行比较 并且它在我的本地计算机上工作正常 但是当我在服务器上尝试它时 它给了我错误并附加 Microsoft PowerShell Core FileSystem 到所有文件 如果
  • 如何使用 PHP 将元素添加到 JSON 对象? [复制]

    这个问题在这里已经有答案了 我有这个 JSON 数组 我想使用 PHP 向其中添加另一个值 使用 PHP 将 ID 和名称添加到该数组的最简单方法是什么 id 1 name Charlie id 2 name Brown id 3 name
  • 获取node.js应用程序的最大堆大小

    现在我在paas平台上使用node js 并且容器有内存限制 现在我想获取node js应用程序的堆大小的最大值 我知道使用参数 max old space size 我可以设置最大堆大小 但我想知道如何获取 max old space s
  • Selenium Webdriver sendkeys 在 IE9.0 中不触发 onchange 事件

    我正在使用 Java 为 ExtJs 中构建的应用程序编写 Selenium 测试脚本 我在附加到 onchange 事件的页面之一中有一个输入字段 每当用户修改字段中的文本时 就会触发 onchange 事件 我正在使用 WebDrive
  • 在 PyDev 控制台中停止正在运行的命令

    我使用 PyDev 控制台运行长脚本 并且经常希望在命令中间停止 在常规 python shell 中 我按 ctrl c 它会通过键盘中断停止命令 但在 PyDev 控制台中 它会进行文本复制 如何停止此控制台中的命令而不终止它 如果您使
  • 何时应使用 Readonly 和 Get only 属性

    在 NET 应用程序中 何时应使用 ReadOnly 属性 何时应仅使用 Get 这两者有什么区别呢 private readonly double Fuel 0 public double FuelConsumption get retu
  • @TargetApi 注解仅适用于一个 Api 级别或更高级别吗?

    我在我的应用程序中使用 TargetApi 23 TargetApi 23 Override public void onAttach Context context super onAttach context onAttachToCon
  • BigQuery 中交叉联接后的行聚合

    假设您在 BigQuery 中有下表 A user1 0 0 user2 0 3 user3 4 0 交叉连接后 您有 dist user1 user2 0 0 0 3 comma is just showing user val sepe
  • LOAD DATA LOCAL INFILE 导致 mysql2 gem 出现格式错误的数据包错误

    我正在尝试发出 LOAD DATA LOCAL INFILE 查询 以使用 Rails 3 1 1 下的 mysql2 gem 0 3 11 将一些 CSV 数据加载到表中 class Foo lt ActiveRecord Base de