1

MySqL config では、次で確認できるように、local_infile が有効になっています: SHOW VARIABLES --> local_infile ON。

しかし、次のコマンドを実行したとき:

ActiveRecord::Base.connection.disconnect!

ActiveRecord::Base.verify_active_connections!

ActiveRecord::Base.connection.execute("LOAD DATA LOCAL INFILE 'blalalla' INTO TABLE blababla")

ActiveRecord::StatementInvalid: Mysql::Error: The used command is not allowed with this MySQL version: LOAD DATA LOCAL INFILE '/tmp/tmp_stores.csv' INTO TABLE tmp_szstores

このトピックはほぼ完全にカバーされています (パッチのみで、説明はありません)。少なくとも 1 つの既存の質問: 4652330

接続の再接続後、Railsで「LOAD DATA LOCAL INFILE」Mysqlクエリを実行できません

私の質問は次のとおりです:なぜverify_active_connections!を呼び出したときに発生するので、接続が閉じられてから再接続/再接続された場合にのみ発生しますか 接続プールが初期接続時に初期化されたときに機能するのはなぜですか?

メソッド verify_active_connections に関連するコードを確認しました。MyslAdapter#reconnect! に委譲します。同じ「接続」メソッドを呼び出します...

再接続後に local_infile フラグを明示的に設定する必要がある理由がわかりません。そうしないと機能しません。

ありがとうございました!!!

4

0 に答える 0