LOAD DATA LOCAL INFILE
はデフォルトでは有効になっていません。通常は、local-infile=1
in my.cnf
。ただし、すべてのインストールで機能するわけではありません。私の経験では、Debian 7では機能しましたが、Debian 7ミニマルでは機能しませんでしたが、どちらのインストールも同じコンパイル済みのdebパッケージからインストールされています。 OpenVZ VPSの両方。
なぜデバッグするかlocal-infile=1
はインストールでは機能せず、安全にアクティブ化する方法LOAD DATA LOCAL INFILE
?
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を再起動します。
試してみる !!!