web-dev-qa-db-ja.com

mysqlでLOAD DATA LOCAL INFILEを有効にする

LOAD DATA LOCAL INFILEはデフォルトでは有効になっていません。通常は、local-infile=1 in my.cnf。ただし、すべてのインストールで機能するわけではありません。私の経験では、Debian 7では機能しましたが、Debian 7ミニマルでは機能しませんでしたが、どちらのインストールも同じコンパイル済みのdebパッケージからインストールされています。 OpenVZ VPSの両方。

なぜデバッグするかlocal-infile=1はインストールでは機能せず、安全にアクティブ化する方法LOAD DATA LOCAL INFILE

10
Googlebot

MySQL Debian-7 Minimalがlocal_infileを使用できない場合は、コンパイルに使用されるすべてのmakeファイルを調べて、デフォルトで無効になっているか、またはDebian-7でlocal_infileが有効になっているかを確認します。

この種の時間をかける前に、以下を実行してください:

SHOW GLOBAL VARIABLES LIKE 'local_infile';
SET GLOBAL local_infile = 'ON';
SHOW GLOBAL VARIABLES LIKE 'local_infile';

次のようになります。

mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

mysql> SET GLOBAL local_infile = 'ON';
Query OK, 0 rows affected (0.06 sec)

mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql>

それでも'OFF'と表示される場合は、コンパイラ設定をよく調べて有効にします。

'ON'に設定されていれば、問題ありません。

私は言わなかったことに注意してください

SET GLOBAL local_infile = 1;

使うと言った

SET GLOBAL local_infile = 'ON';

オプションlocal_infileは数値ではなくブール値です

これをmy.cnfで設定する場合

[mysqld]
local_infile=ON

mysqlを再起動しても機能しません。mysqlを次のように起動する必要があります。

echo "SET GLOBAL local_infile = 'ON';" > /var/lib/mysql/init_file.sql
chown mysql:mysql /var/lib/mysql/init_file.sql
service mysql stop
service mysql start --init-file=/var/lib/mysql/init_file.sql
rm -f /var/lib/mysql/init_file.sql

または、これをmy.cnfに追加する

[mysqld]
init-file=/var/lib/mysql/init_file.sql

次に、mysqlを再起動します。

試してみる !!!

18
RolandoMySQLDBA