2

我有一个在 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上最近的上一个问题涉及drupal,错误是不同的,但我记得drupal也使用pdo_mysql进行连接,也许是相关的。Magento 上唯一提到此错误的是该线程,该线程在 LOAD DATA LOCAL INFILE 命令上也失败。

4

1 回答 1

2

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

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

HTH, 法学博士

于 2010-11-08T12:20:27.963 回答