열의 데이터가 잘렸습니까?
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_Cid열 CHAR(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
'program story' 카테고리의 다른 글
| Visual Studio : "다른 네임 스페이스로 클래스 이동"리팩토링이 있습니까? (0) | 2020.11.21 |
|---|---|
| C #이 내 제네릭 유형을 유추하지 않는 이유는 무엇입니까? (0) | 2020.11.21 |
| Rails에서 다 대다 관계 생성 (0) | 2020.11.20 |
| Apache httpd 용 mod_ssl을 설치하는 방법은 무엇입니까? (0) | 2020.11.20 |
| 구문 오류 : 예기치 않은 토큰 < (0) | 2020.11.20 |