LOAD DATA LOCAL INFILE работает только иногда - PullRequest
2 голосов
/ 08 ноября 2010

У меня есть команда LOAD DATA, которая отлично работает в терминале MySQL. Он отлично работает в тестовом файле 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.

1 Ответ

2 голосов
/ 08 ноября 2010

Согласно предложению @DeveloperChris, вы можете включить ведение журнала SQL в Magento в классе Varien_Db_Adapter_Pdo_Mysql (в пути lib\Varien). Измените переменные класса $_debug и $_logAllQueries на true. Вы также можете изменить путь к файлу, в котором запросы регистрируются в $_debugFile.

Не забудьте выключить его перед началом производства!

НТН, JD

...