LOAD DATA LOCAL INFILE
n'est pas activé par défaut. Normalement, il doit être activé en plaçant local-infile=1
dans my.cnf
. Mais cela ne fonctionne pas pour toutes les installations. D'après mon expérience, cela a fonctionné pour Debian 7, mais pas Debian 7 minimal, bien que les deux installations proviennent du même paquet deb précompilé. Les deux sur OpenVZ VPS.
Comment déboguer pourquoi local-infile=1
ne fonctionne pas pour une installation, et comment activer en toute sécurité LOAD DATA LOCAL INFILE
?
Si MySQL Debian-7 minimal ne peut pas utiliser local_infile
, parcourez tous les fichiers make utilisés pour la compilation pour voir s'il est désactivé par défaut ou si local_infile
est activé pour Debian-7.
Avant de prendre ce genre de temps, veuillez exécuter ce qui suit:
SHOW GLOBAL VARIABLES LIKE 'local_infile';
SET GLOBAL local_infile = 'ON';
SHOW GLOBAL VARIABLES LIKE 'local_infile';
Il devrait faire écho aux éléments suivants:
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>
S'il indique toujours 'OFF'
, puis regardez en profondeur dans les paramètres du compilateur pour l'activer.
S'il est défini sur 'ON'
, tu vas bien.
Veuillez noter que je n'ai pas dit
SET GLOBAL local_infile = 1;
J'ai dit utiliser
SET GLOBAL local_infile = 'ON';
l'option local_infile est booléenne et non numérique .
Si vous définissez ceci dans my.cnf
[mysqld]
local_infile=ON
et redémarrer mysql ne fonctionne pas non plus, vous devrez démarrer mysql avec quelque chose comme ceci:
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
ou peut-être l'ajouter à my.cnf
[mysqld]
init-file=/var/lib/mysql/init_file.sql
puis redémarrez mysql.
Essaie !!!