source

MySQL varchart 설정이 너무 깁니다.

ittop 2023. 8. 26. 00:04
반응형

MySQL varchart 설정이 너무 깁니다.

MySQL 인스턴스가 두 개 있습니다.첫 번째 것은 데이터가 너무 길 때 삽입할 때 문자열을 잘라냅니다.두 번째 오류가 발생합니다.

ERROR 1406 (22001): Data too long for column 'xxx' at row 1

나는 두 번째 것도 데이터를 잘라주길 원합니다.이 동작을 관리하기 위한 MySQL 설정이 있습니까?

사용하지 않도록 설정할 수 있습니다.STRICT_TRANS_TABLES그리고.STRICT_ALL_TABLES이렇게 하면 삽입된 문자열을 자동으로 잘라낼 수 있습니다.

MySQL Documentation에서 인용합니다.

엄격 모드는 INSERT 또는 UPDATE와 같은 데이터 변경 문에서 MySQL이 올바르지 않거나 누락된 값을 처리하는 방법을 제어합니다.값은 여러 가지 이유로 인해 유효하지 않을 수 있습니다.예를 들어 열에 대한 데이터 유형이 잘못되었거나 범위를 벗어났을 수 있습니다.삽입할 새 행에 정의에 명시적인 DEFAULT 절이 없는 NULL이 아닌 열에 대한 값이 포함되어 있지 않으면 값이 누락됩니다. NULL 열의 경우 값이 누락된 경우 NULL이 삽입됩니다.

참조:MySQL Server SQL 모드

엄격한 SQL 모드를 사용할 수 없는 경우 열의 최대 길이를 초과하는 값을 CHAR 또는 VARCHAR 열에 할당하면 해당 값이 적합하도록 잘리고 경고가 생성됩니다.공백이 아닌 문자를 잘라내는 경우 경고가 아닌 오류가 발생하고 엄격한 SQL 모드를 사용하여 값 삽입을 억제할 수 있습니다.섹션 6.1.7, "서버 SQL 모드"를 참조하십시오.

변경 방법: http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html


엄격 모드를 비활성화하는 두 가지 방법을 찾았습니다.

  1. 아래를 my.cnf에 추가합니다.

    sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_Substitution"

  2. 방법은 mysql 콘솔을 사용하고 있습니다.

    SET @@@global.sql_mode= '';

프로덕션 환경에서 실행하기 전에 테스트하십시오.

만약 당신이 cpanel을 사용한다면,

교체하다

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

/usr/my.cnf로

로.

sql-mode=""

달려.

/etc/init.d/mysql restart

언급URL : https://stackoverflow.com/questions/18459184/mysql-too-long-varchar-truncation-error-setting

반응형