A configuração do MySQL PHP não permite LOAD DATA LOCAL INFILE

1

Eu tentei adicionar linhas ao my.cnf

[mysql]
infile = 1
[mysqld]
infile = 1

SHOW VARIABLES LIKE "%infile" exibe true no mysql.

Mas o LOAD DATA não funciona. Eu tentei em um script PHP e no phpMyAdmin.

Ele só funciona se eu iniciar o mysql a partir da linha de comando com o --allow-infile flag

mysql --local-infile -u root -p db_name

Mas isso não resolveu o problema do PHP.

    
por Buttle Butkus 22.11.2012 / 04:14

3 respostas

2

Eu finalmente resolvi o problema no que parece ser uma maneira ridiculamente simples. Já vi muitas postagens sobre esse problema, mas a única solução que encontrei foi uma que estava um pouco oculta em uma postagem do stackoverflow . Acontece que o problema pode ser resolvido no momento da conexão (o que faz sentido):

mysql_connect(HOST,USER,PASS,false,128);

A resposta está bem ali na página de manual , acontece.

A única coisa que eu ainda não entendo é por que isso é necessário na minha nova instalação do Ubuntu, mas nunca foi um problema em nenhum outro sistema, Ubuntu ou CentOS.

Devo também acrescentar que o método acima é provavelmente mais portátil do que outros métodos, já que você está configurando o tipo de conexão no código em vez de em um arquivo de configuração.

    
por 22.11.2012 / 04:14
0

Existe uma opção para permitir a consulta LOAD DATA LOCAL INFILE em /etc/my.cnf:

local-infile = 1

Lembre-se de reiniciar o MySQL depois de aplicar a mudança.

    
por 25.11.2012 / 04:05
0

Para usuários do Ubuntu, encontrei a solução. Esse problema está relacionado ao AppArmor MySQL LOAD DATA INFILE - Problema do AppArmor

    
por 16.01.2013 / 09:38