program story

열의 데이터가 잘렸습니까?

inputbox 2020. 11. 21. 14:08
반응형

열의 데이터가 잘렸습니까?


Twilio 호출 ID (34 자 문자열) 를 저장하기 위해 MySql 열의 데이터 유형을 변경 한 후 다음을 사용하여 해당 열의 데이터를 수동으로 변경하려고합니다.

update calls 
   set incoming_Cid='CA9321a83241035b4c3d3e7a4f7aa6970d' 
 where id='1';

그러나 열의 데이터 유형이 올바르게 수정되었으므로 의미가없는 오류가 발생합니까?

| Level ||| Code | Message | Warning | 1265 | Data truncated for column 'incoming_Cid' at row 1


귀하의 문제는 현재 귀하의 incoming_CidCHAR(1)CHAR(34).

이 문제를 해결하려면이 명령을 실행하여 열 길이를 1에서 34로 변경하십시오.

ALTER TABLE calls CHANGE incoming_Cid incoming_Cid CHAR(34);

다음은 SQLFiddle 데모입니다.


이 진술을 발행함으로써 :

ALTER TABLES call MODIFY incoming_Cid CHAR;

... 길이 매개 변수를 생략했습니다. 따라서 귀하의 쿼리는 다음과 동일합니다.

ALTER TABLE calls MODIFY incoming_Cid CHAR(1);

1보다 큰 크기의 경우 필드 크기를 지정해야합니다.

ALTER TABLE calls MODIFY incoming_Cid CHAR(34);

ENUM ( 'x', 'y', 'z')로 정의 된 테이블 열 때문에 동일한 문제가 발생했으며 나중에이 열에 'a'값을 저장하려고했기 때문에 오류.

테이블 열 정의를 변경하고 열거 형 집합에 값 'a'를 추가하여 해결됩니다.


그러나 열의 데이터 유형이 올바르게 수정되었으므로 의미가없는 오류가 발생합니까?

| Level | Code | Msg | Warn | 12 | Data truncated for column 'incoming_Cid' at row 1

다음과 같은 작업을 수행 할 때 종종이 메시지를받을 수 있습니다.

REPLACE INTO table2 (SELECT * FROM table1);

우리의 경우 다음과 같은 오류가 발생했습니다.

SQL Exception: Data truncated for column 'level' at row 1

문제는 열 정렬이 잘못되어 필드에 tinyint저장을 시도 datetime하거나 그 반대의 경우 로 판명되었습니다 .


제 경우에는 요일을 정수 (0 ~ 6)로 받아들이는 ENUM이있는 테이블이었습니다. 0 값을 정수로 삽입 할 때 "Data truncated for column ..."이라는 오류 메시지가 표시되어이를 수정하기 위해 정수를 문자열로 캐스팅해야했습니다. 그래서 대신 :

$item->day = 0;

나는해야했다.

$item->day = (string) 0;

0을 이렇게 캐스팅하는 것은 어리석은 것처럼 보이지만 제 경우에는 Laravel 공장에 있었으므로 다음과 같이 작성해야했습니다.

$factory->define(App\Schedule::class, function (Faker $faker) {
    return [
        'day' => (string) $faker->numberBetween(0, 6),
        //
    ];
});

참고 URL : https://stackoverflow.com/questions/18089240/data-truncated-for-column

반응형