【发布时间】: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