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、JD

于 2010-11-08T12:20:27.963 に答える