2010-11-08 2 views
2

У меня есть команда LOAD DATA, которая отлично работает в терминале MySQL. Он отлично работает в тестовом PHP-файле, который подается с моего локального сервера. Он отлично работает в phpMyAdmin на том же сервере. Он необъяснимо ломается при запуске от Magento, также на том же сервере.LOAD DATA LOCAL INFILE работает только иногда

Я подтвердил, что все методы используют одинаковые учетные данные. Если я скопирую неудачную команду (включая все предыдущие запросы из соединения вперед) из журнала запросов и вставляю ее в любой другой метод, она загадочно работает снова. Сам запрос не может быть виноват.

Поэтому я выводя проблему должен быть разрешением. Файловая привилегия установлена ​​и работает для других реализаций в одной учетной записи. 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.

+0

Вы можете разместить то, что конкретное содержание не удается? –

+0

включите регистрацию и посмотрите, что произойдет. вы должны следить за вызовами sql и определять, происходит ли что-то странное. также проверьте логины, возможно, у вас есть 2 логина для «localhost» и, возможно, один для «%», каждый из них будет иметь разные разрешения, load infile должен иметь соответствующие разрешения. – DeveloperChris

+0

@DeveloperChris. Хорошее предложение поиска хоста «%», но, к сожалению, не существует. Существует только одна учетная запись с доступом к этой конкретной базе данных, и, конечно же, корень, но я не использую это. – clockworkgeek

ответ

2

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

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

НТН, JD

+0

SQL-журнал показывает то же, что и журнал основных запросов. Копирование - вставка запросов из журнала в терминал работает. – clockworkgeek

Смежные вопросы