[SQL] ERROR 1148 : 사용 된 명령이 MySQL 버전과 함께 사용할 수 없습니다
SQLERROR 1148 : 사용 된 명령이 MySQL 버전과 함께 사용할 수 없습니다
내가 사용하는 MySQL 데이터베이스에 데이터를로드하는 것을 시도하고있다
LOAD DATA LOCAL
INFILE A.txt
INTO DB
LINES TERMINATED BY '|';
이 질문의 주제는 내가 얻는 반응이다. 나는 로컬 데이터 오프로드는 기본적으로 꺼져 이해하고 나는 그것이 명령 로컬 INFILE = 1을 사용하지만이 명령을 배치 할 위치를 모르는 활성화해야합니다.
해결법
-
==============================
1.클라이언트 연결을 설정할 때 추가 옵션으로 그것을 지정할 수 있습니다 :
클라이언트 연결을 설정할 때 추가 옵션으로 그것을 지정할 수 있습니다 :
mysql -u myuser -p --local-infile somedatabase
이 기능은 보안 구멍을 열고 있기 때문이다. 그래서 당신은 당신이 정말로 그것을 사용하려는 경우 명시 적 방식으로 활성화해야합니다.
클라이언트와 서버는 로컬 파일 옵션을 사용하도록 설정해야합니다. 그렇지 않으면 그것은 my.cnf의 구성 파일에 다음과 같은 서버 측 서버 추가에서 파일을 활성화 work.To하지 않습니다
loose-local-infile = 1
-
==============================
2.나는 여기에 대한 답을 찾을 수 있습니다.
나는 여기에 대한 답을 찾을 수 있습니다.
0 | 서버 변수 local_infile가 FALSE로 설정되어 있기 때문입니다. 문서에서 참조하십시오.
당신은 실행하여 확인할 수 있습니다 :
SHOW VARIABLES LIKE 'local_infile';
당신이 SUPER 권한이있는 경우 실행하여 (새로운 구성으로 서버를 다시 시작하지 않고)을 활성화 할 수 있습니다 :
SET GLOBAL local_infile = 1;
-
==============================
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.이 모든 우분투 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.봄 부팅 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.그냥 약간의 추가.
그냥 약간의 추가.
또 다른 환생 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.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.고정 표시기 [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.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.상단의 대답은 정확합니다. 그들이 처음으로 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.자바 8 + 버전, JDBC와 MySQL (8)를 사용하여이 문제를 직면하는 경우,이 시도 :
자바 8 + 버전, JDBC와 MySQL (8)를 사용하여이 문제를 직면하는 경우,이 시도 :
연결 문자열에 매개 변수를 추가 :
jdbc:mysql://localhost:3306/tempDB?allowLoadLocalInfile=true
또한, 설정
my.cnf의 파일입니다.
mysql을 - 자바 커넥터의 최신 버전은 직접 로컬 파일에 연결할 수 있도록 않을 수 있습니다. 이 매개 변수 그래서, 당신은 그것을 가능하게 할 수 있습니다. 이것은 나를 위해 작동합니다.
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
'SQL' 카테고리의 다른 글
[SQL] 벌크는 SQL Server 2008에서 삭제 (삭제 데이터를 대량 복사 (BCP와 같은이 무엇이든)인가?) (0) | 2020.04.01 |
---|---|
[SQL] 오라클에서 동적으로 행을 열로 회전식 (0) | 2020.04.01 |
[SQL] SQL ROWNUM 어떻게 특정 범위 사이에 행을 반환합니다 (0) | 2020.04.01 |
[SQL] CodeIgniter의 액티브 레코드 패턴 UNION 쿼리 (0) | 2020.04.01 |
[SQL] SQL 서버에 매개 변수로 테이블을 통과 UDF (0) | 2020.04.01 |