【问题标题】:LOAD DATA LOCAL INFILE only works sometimesLOAD DATA LOCAL INFILE 有时仅适用
【发布时间】:2011-05-06 11:24:55
【问题描述】:

我有一个可以在 MySQL 终端中正常工作的 LOAD DATA 命令。它在我的本地服务器提供的测试 PHP 文件中运行良好。它在同一台服务器上的 phpMyAdmin 中运行良好。在同一台服务器上从 Magento 运行时,它会莫名其妙地崩溃。

我已确认所有方法都使用相同的登录凭据。如果我从查询日志中复制失败的命令(包括从连接开始的所有先前查询)并粘贴到任何其他方法中,它就会神秘地再次起作用。查询本身不能出错。

因此我推断问题一定是权限问题。文件权限已设置并适用于同一帐户上的其他实现。 Magento 使用 pdo_mysql 作为连接。如果我在测试文件中复制它,它就可以工作。 Magento 必须设置一些干扰参数。

我得到的错误是SQLSTATE[42000]: Syntax error or access violation: 1148 The used command is not allowed with this MySQL version。我必须使用“LOCAL”修饰符关键字,因为我不能保证可以访问数据库服务器。

SO concerns drupal 上最近的上一个问题,错误是不同的,但我记得 drupal 也使用 pdo_mysql 连接,也许它是相关的。 Magento is this thread 上唯一提到此错误的另一个提及,该错误在 LOAD DATA LOCAL INFILE 命令上也失败。

【问题讨论】:

  • 你能发布哪些具体内容失败了吗?
  • 开启sql登录看看会发生什么。您应该能够跟踪 sql 调用并确定是否发生了奇怪的事情。还要检查登录名,也许您有 2 个登录名,一个用于“localhost”,一个用于“%”,每个都具有不同的权限,加载 infile 必须设置正确的权限。
  • @DeveloperChris。寻找主机 '%' 的好建议,但遗憾的是不存在。只有一个帐户可以访问这个特定的数据库,当然也是 root,但我不使用它。

标签: mysql magento pdo phpmyadmin load-data-infile


【解决方案1】:

根据@DeveloperChris 的建议,您可以在 Magento 中的 Varien_Db_Adapter_Pdo_Mysql 类(在 lib\Varien 路径中)启用 SQL 日志记录。将$_debug$_logAllQueries 类变量更改为true。您还可以更改在$_debugFile 中记录查询的文件路径。

不要忘记在生产前将其关闭!

HTH, 京东

【讨论】:

  • SQL 日志显示与主查询日志相同。将查询从任一日志复制粘贴到终端都可以。
猜你喜欢
  • 2012-06-01
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多