복붙노트

[SQL] 열 너무 긴 1406 데이터 - MySQL의 오류 코드

SQL

열 너무 긴 1406 데이터 - MySQL의 오류 코드

너무 오래 열에 대한 1406 데이터 : 오류 코드

CREATE  TABLE `TEST` 
(

  `idTEST` INT NOT NULL ,

  `TESTcol` VARCHAR(45) NULL ,

  PRIMARY KEY (`idTEST`) 
);

이제 몇 가지 값을 삽입

INSERT INTO TEST
VALUES
(
    1,
    'Vikas'
)

select 

SELECT * FROM TEST;

더 길이보다 기록을 삽입

INSERT INTO TEST
VALUES
(
    2,
    'Vikas Kumar Gupta Kratika Shukla Kritika Shukla'
)

우리는 길이를 선택하는 경우

SELECT LENGTH('Vikas Kumar Gupta Kratika Shukla Kritika Shukla')

 '47'

그리고 그것은 오류 메시지를 보여주고있다

너무 오래 열에 대한 1406 데이터 : 오류 코드

하지만 표 적어도 처음 45 개 문자를 삽입하려면, 내 기대는 무엇인가

질문이 명확하지 않은 경우 알려 주시기 바랍니다.

이 오류의 원인을 알고있다. 나는 데이터 형식의 길이보다 더 많은 값을 삽입하려합니다.

나는 그것은 MS SQL에서 가능한로 MySQL의 솔루션을 원한다. 나는 희망 그래서 그것은 또한 MySQL의에있을 것입니다.

해결법

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

    1.MySQL은 지정된 열 너비를 초과하는 삽입 값을 자릅니다.

    MySQL은 지정된 열 너비를 초과하는 삽입 값을 자릅니다.

    오류 시도하지 않고이 작업을하기 위해 엄격한 사용하지에 SQL 모드를 전환 할 수 있습니다.

    MySQL의 참조 설명서

    모드를 변경하려면

    이 두 가지 방법으로 수행 할 수 있습니다 :

    찾기:

    암호:

    # Set the SQL mode to strict 
    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    

    교체 :

    암호:

    # Set the SQL mode to strict 
    sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    

    또는

    암호:

    SET @@global.sql_mode= '';
    
  2. ==============================

    2.나는 앱이 사용자가 입력 한 데이터의 손실을 시작할 수 있기 때문에 엄격 모드를 전환하는 좋은 옵션이 아니라고 생각.

    나는 앱이 사용자가 입력 한 데이터의 손실을 시작할 수 있기 때문에 엄격 모드를 전환하는 좋은 옵션이 아니라고 생각.

    앱에서 TESTcol 값을받을 경우에 당신은 레일처럼, 모델 검증을 추가 할 수 있습니다

    validates :TESTcol, length: { maximum: 45 }
    

    당신이 SQL 스크립트의 값을 조작 할 경우에 당신은 SUBSTRING 명령 문자열을자를 수있다

    INSERT INTO TEST
    VALUES
    (
        1,
        SUBSTRING('Vikas Kumar Gupta Kratika Shukla Kritika Shukla', 0, 45)
    );
    
  3. ==============================

    3.이것은 내가 우분투를 사용하는 단계이다. 그것은 당신이 당신의 입력에서 45 개 이상의 문자를 삽입 할 수 있지만, MySQL은 데이터베이스에 삽입 할 45 자에 텍스트를 잘라 것입니다.

    이것은 내가 우분투를 사용하는 단계이다. 그것은 당신이 당신의 입력에서 45 개 이상의 문자를 삽입 할 수 있지만, MySQL은 데이터베이스에 삽입 할 45 자에 텍스트를 잘라 것입니다.

  4. ==============================

    4.당신의 SQL 데이터베이스의 한계를 확인하십시오. 어쩌면 you'r이 행 필드 제한을 초과.

    당신의 SQL 데이터베이스의 한계를 확인하십시오. 어쩌면 you'r이 행 필드 제한을 초과.

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

    5.당신이 특정 열 예에 대한 단어의 수를 잘릴 수도 있기 때문에, 당신의 모델과 수표로 이동합니다. MAX_LENGTH = "150".

    당신이 특정 열 예에 대한 단어의 수를 잘릴 수도 있기 때문에, 당신의 모델과 수표로 이동합니다. MAX_LENGTH = "150".

  6. from https://stackoverflow.com/questions/15949038/error-code-1406-data-too-long-for-column-mysql by cc-by-sa and MIT license