복붙노트

[SQL] ERROR 1148 : 사용 된 명령이 MySQL 버전과 함께 사용할 수 없습니다

SQL

ERROR 1148 : 사용 된 명령이 MySQL 버전과 함께 사용할 수 없습니다

내가 사용하는 MySQL 데이터베이스에 데이터를로드하는 것을 시도하고있다

LOAD DATA LOCAL
INFILE A.txt
INTO DB
LINES TERMINATED BY '|';

이 질문의 주제는 내가 얻는 반응이다. 나는 로컬 데이터 오프로드는 기본적으로 꺼져 이해하고 나는 그것이 명령 로컬 INFILE = 1을 사용하지만이 명령을 배치 할 위치를 모르는 활성화해야합니다.

해결법

  1. ==============================

    1.클라이언트 연결을 설정할 때 추가 옵션으로 그것을 지정할 수 있습니다 :

    클라이언트 연결을 설정할 때 추가 옵션으로 그것을 지정할 수 있습니다 :

    mysql -u myuser -p --local-infile somedatabase
    

    이 기능은 보안 구멍을 열고 있기 때문이다. 그래서 당신은 당신이 정말로 그것을 사용하려는 경우 명시 적 방식으로 활성화해야합니다.

    클라이언트와 서버는 로컬 파일 옵션을 사용하도록 설정해야합니다. 그렇지 않으면 그것은 my.cnf의 구성 파일에 다음과 같은 서버 측 서버 추가에서 파일을 활성화 work.To하지 않습니다

    loose-local-infile = 1
    
  2. ==============================

    2.나는 여기에 대한 답을 찾을 수 있습니다.

    나는 여기에 대한 답을 찾을 수 있습니다.

    0 | 서버 변수 local_infile가 FALSE로 설정되어 있기 때문입니다. 문서에서 참조하십시오.

    당신은 실행하여 확인할 수 있습니다 :

    SHOW VARIABLES LIKE 'local_infile';
    

    당신이 SUPER 권한이있는 경우 실행하여 (새로운 구성으로 서버를 다시 시작하지 않고)을 활성화 할 수 있습니다 :

    SET GLOBAL local_infile = 1;
    
  3. ==============================

    3.http://dev.mysql.com/doc/refman/5.6/en/load-data-local.html

    http://dev.mysql.com/doc/refman/5.6/en/load-data-local.html

    my.cnf 파일이 넣어 -에서 [클라이언트] 섹션은 이미이 있어야한다 (당신이 있다면 너무 보안에 대해 우려하지 않음).

    [client]
    loose-local-infile=1
    
  4. ==============================

    4.이 모든 우분투 15.04 새로운 내 브랜드에 나를 위해 그것을 해결하지 않았다.

    이 모든 우분투 15.04 새로운 내 브랜드에 나를 위해 그것을 해결하지 않았다.

    나는 LOCAL을 제거하고이 명령을 받았습니다 :

    LOAD DATA
    INFILE A.txt
    INTO DB
    LINES TERMINATED BY '|';
    

    하지만 내가 가지고 :

    MySQL said: File 'A.txt' not found (Errcode: 13 - Permission denied)
    

    그것은 나를 위해 문제를 해결 유래에 대한 또 다른 질문 넬슨에서이 해답를 알려준!

  5. ==============================

    5.봄 부팅 2.1 기본 MySQL의 커넥터

    봄 부팅 2.1 기본 MySQL의 커넥터

    이 지침을 따르십시오 해결하려면

    이 전역 변수를 설정하는 MySQL의 문서에서 제공하는 지침을 따르십시오 https://dev.mysql.com/doc/refman/8.0/en/load-data-local.html

    allowLoadLocalInfile 사실 = 예 : JDBC한다 : mysql : // localhost를 : 3306 / XXXX useSSL = 거짓 & useUnicode = 예 & characterEncoding = UTF-8 allowLoadLocalInfile = TRUE

  6. ==============================

    6.그냥 약간의 추가.

    그냥 약간의 추가.

    또 다른 환생 mysql.connector에서 8.0.16를 버전을 찾을 수 지금 allow_local_infile 필요 진정한 = 또는 위의 오류를 볼 수 있습니다. 이전 버전에서 일했다.

    conn = mysql.connector.connect(host=host, user=user, passwd=passwd, database=database, allow_local_infile=True)
    
  7. ==============================

    7.AWS의 MySQL 8.0 RDS에 CSV 파일을 가져 오는 동안 저도 같은 문제를 가지고 있었다.

    AWS의 MySQL 8.0 RDS에 CSV 파일을 가져 오는 동안 저도 같은 문제를 가지고 있었다.

    local_infile 매개 변수 1) 확인

    mysql> SHOW VARIABLES LIKE 'local_infile';
    

    2) 클라이언트 및 재 로그인이 매개 변수 아래 사용에서 로그 아웃합니다.

    mysql -u root -p -h rdsendpoint --local-infile=1
    

    3) 같은 명령을 실행

    mysql> LOAD DATA LOCAL INFILE '/tmp/your.csv' INTO TABLE test.demo2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;
    
    
    Query OK, 300 rows affected (0.01 sec)
    
    Records: 300  Deleted: 0  Skipped: 0  Warnings: 0
    
  8. ==============================

    8.고정 표시기 [1]를 사용할 때이 데이터를 로딩하는 동안이 오류가 발생했습니다. 나는이 다음 단계를 수행 한 후이 솔루션은했다. 처음에, 나는 데이터베이스 및 테이블 datavault 및 fdata를 만들었습니다. 내가 데이터 [2]을 가져했을 때, 나는 오류 [3]을 얻었다. 그리고 내가 그랬어 :

    고정 표시기 [1]를 사용할 때이 데이터를 로딩하는 동안이 오류가 발생했습니다. 나는이 다음 단계를 수행 한 후이 솔루션은했다. 처음에, 나는 데이터베이스 및 테이블 datavault 및 fdata를 만들었습니다. 내가 데이터 [2]을 가져했을 때, 나는 오류 [3]을 얻었다. 그리고 내가 그랬어 :

    완성도를 위해, 나는 용기 내부의 MySQL의 버전을 실행하고 추가 할를 통해 고정 표시기 간부 - 그것은 TESTDB 쉬. MySQL의 버전은 x86_64의 Linux 용 8.0.17 (- GPL MySQL의 커뮤니티 서버) 버전 mysql을했다. 이것은 또한 WAMP64에서 MySQL의 다른 버전은 Win64이었다 (x86_64의)의 경우, 14.14 버전 5.7.14 DISTRIB mysql.exe 테스트 하였다. 사용되는 관련 명령은 [5]에 열거되어있다.

    [1] 고정 표시기 --name TESTDB -v // C / 사용자 / C / 다운로드 / 데이터 / CSV 데이터 / 실행은 / var / 데이터 -p 3306 -e MYSQL_ROOT_PASSWORD = 비밀번호 -d mysql을을 : 최신

    \ n '종료 라인'으로 둘러싸인 종료 테이블 fdata 필드 ','로 [2] 하중 로컬 데이터 INFILE '/var/data/mockdata.csv는'1 ROWS 무시;

    [3] ERROR 1148 (42000) : 사용 된 명령이 MySQL 버전으로 허용되지

    [4] 필수 클라이언트 사용하여 제작 하였다 :

    [5] 명령 WAMP64에서 MySQL을 사용 :

  9. ==============================

    9.LOAD DATA LOCAL과 6.1.6 보안 문제 - MySQL의 8.0 참조 설명서를 참조하십시오

    LOAD DATA LOCAL과 6.1.6 보안 문제 - MySQL의 8.0 참조 설명서를 참조하십시오

    서버 측에서 실행

    mysql.server start --local-infile
    

    클라이언트 측에서 실행

    mysql --local-infile database_name -u username -p
    
  10. ==============================

    10.상단의 대답은 정확합니다. 그들이 처음으로 MySQL의 CLI에서 직접 확인하시기 바랍니다. 문제가이 수정 경우, 당신은 단지 MySQLdb.connectas 매개 변수에 전달이 Python3에서 작업하도록 할 수 있습니다

    상단의 대답은 정확합니다. 그들이 처음으로 MySQL의 CLI에서 직접 확인하시기 바랍니다. 문제가이 수정 경우, 당신은 단지 MySQLdb.connectas 매개 변수에 전달이 Python3에서 작업하도록 할 수 있습니다

    self.connection = MySQLdb.connect(
                        host=host, user=settings_DB.db_config['USER'],
                        port=port, passwd=settings_DB.db_config['PASSWORD'], 
                        db=settings_DB.db_config['NAME'],
                        local_infile=True)
    
  11. ==============================

    11.자바 8 + 버전, JDBC와 MySQL (8)를 사용하여이 문제를 직면하는 경우,이 시도 :

    자바 8 + 버전, JDBC와 MySQL (8)를 사용하여이 문제를 직면하는 경우,이 시도 :

    연결 문자열에 매개 변수를 추가 :

    jdbc:mysql://localhost:3306/tempDB?allowLoadLocalInfile=true
    

    또한, 설정

    my.cnf의 파일입니다.

    mysql을 - 자바 커넥터의 최신 버전은 직접 로컬 파일에 연결할 수 있도록 않을 수 있습니다. 이 매개 변수 그래서, 당신은 그것을 가능하게 할 수 있습니다. 이것은 나를 위해 작동합니다.

  12. from https://stackoverflow.com/questions/18437689/error-1148-the-used-command-is-not-allowed-with-this-mysql-version by cc-by-sa and MIT license