mysql에서 LOAD DATA LOCAL INFILE 활성화


10

LOAD DATA LOCAL INFILE기본적으로 활성화되어 있지 않습니다. 일반적으로, 그것은 배치하여 사용하도록 설정해야합니다 local-infile=1에서 my.cnf. 그러나 모든 설치에서 작동하지는 않습니다. 내 경험상 데비안 7에서는 효과가 있었지만 데비안 7에서는 최소가 아니었지만 두 설치 모두 사전 컴파일 된 동일한 deb 패키지에서 비롯되었습니다. 둘 다 OpenVZ VPS에 있습니다.

local-infile=1설치가 작동하지 않는 이유를 디버깅 하는 방법과 안전하게 활성화하는 방법은 LOAD DATA LOCAL INFILE무엇입니까?

답변:


19

MySQL 데비안 -7 최소값을 사용할 수없는 경우 local_infile컴파일에 사용 된 모든 make 파일을 살펴보고 기본적으로 비활성화되어 있는지 또는 local_infile데비안 -7에 활성화되어 있는지 확인하십시오 .

그런 시간을 갖기 전에 다음을 실행하십시오.

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을 다시 시작하십시오.

시도 해봐 !!!


실제로 필요한 디버깅에 대한 실용적인 지침에 감사드립니다. 첫 번째 단계에서, 내가 보여준 것처럼, 나는 잘못된 길을 가고 있다고 밝혔다 local_infile | ON . 문제는 mysql이 아니라 PHPmysql-PHP 커넥터 / 드라이버 (mysqli) 인 것 같습니다.
Googlebot

: 나는 msqli와 함께 작동하도록 PHP에서 이것을 사용했다 $con = mysqli_init(); $con->options(MYSQLI_OPT_LOCAL_INFILE, true);
라두 보그

이미 켜져 mysqli.allow_local_infile = On있기 때문에 PHP 에서 활성화하는 것이 좋았 GLOBAL local_infile = 'ON';습니다.
Rolands.EU

0

Windows에서 MySQL 8.0.20의 기본 설치 :

  1. 에서 초기화 파일을 찾으십시오 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini.
  2. my.ini텍스트 편집기로 파일을 엽니 다 .
  3. 헤더를 찾아 [client], [mysql]클라이언트 섹션 및 [mysqld]서버 섹션에서.
  4. 이러한 각 헤더 아래에 다음 명령문을 추가하십시오.

    local_infile=ON

  5. 파일을 저장하고 Windows 로컬 서비스에서 MySQL80 서비스를 다시 시작하십시오.

작동해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.