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 데모입니다.
답변
ENUM ( ‘x’, ‘y’, ‘z’)로 정의 된 테이블 열 때문에 동일한 문제가 발생했으며 나중에이 열에 ‘a’값을 저장하려고했기 때문에 오류.
테이블 열 정의를 변경하고 열거 형 집합에 값 ‘a’를 추가하여 해결됩니다.
답변
이 진술을 발행함으로써 :
ALTER TABLES call MODIFY incoming_Cid CHAR;
… 길이 매개 변수를 생략했습니다. 따라서 귀하의 쿼리는 다음과 동일합니다.
ALTER TABLE calls MODIFY incoming_Cid CHAR(1);
1보다 큰 크기의 경우 필드 크기를 지정해야합니다.
ALTER TABLE calls MODIFY incoming_Cid CHAR(34);
답변
그러나 열의 데이터 유형이 제대로 수정 되었기 때문에 의미가없는 오류가 발생합니까?
| 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),
//
];
});
답변
처음으로 csv를 mysql로 가져 오려고 할 때 동일한 오류가 발생하고 내가 만든 mysql 테이블에 가져 오는 csv 필드의 문자 길이가 없다는 것을 알았으므로 csv를 처음 가져 오는 경우
- 더 많은 문자 길이를 제공하는 것이 좋습니다.
- 모든 필드에
varchar
또는 레이블을 지정하고text
혼합int
또는 다른 값을 사용 하지 마십시오 .
그럼 당신은 갈 수 있습니다.
답변
열거 형 유형 인 “SET”유형의 데이터베이스 필드에서 동일한 문제가 발생했습니다.
그 목록에없는 값을 추가하려고했습니다.
추가하려고 한 값은 십진수 256이지만 열거 형 목록에는 8 개의 값만 있습니다.
1: 1 -> A
2: 2 -> B
3: 4 -> C
4: 8 -> D
5: 16 -> E
6: 32 -> F
7: 64 -> G
8: 128 -> H
그래서 필드에 추가 값을 추가해야했습니다.
이 문서 항목을 읽고 문제를 이해하는 데 도움 이 되었습니다.
MySQL은 첫 번째 집합 멤버에 해당하는 저장된 값의 하위 비트와 함께 SET 값을 숫자로 저장합니다. 숫자 컨텍스트에서 SET 값을 검색하는 경우 검색된 값에는 열 값을 구성하는 집합 멤버에 해당하는 비트 세트가 있습니다. 예를 들어 다음과 같이 SET 열에서 숫자 값을 검색 할 수 있습니다.
mysql> SELECT set_col+0 FROM tbl_name; If a number is stored into a
숫자가 SET 열에 저장되는 경우 숫자의 이진 표현에 설정된 비트는 열 값의 집합 멤버를 결정합니다. SET ( ‘a’, ‘b’, ‘c’, ‘d’)로 지정된 열의 경우 멤버는 다음과 같은 10 진수 및 2 진 값을 갖습니다.
SET Member Decimal Value Binary Value
'a' 1 0001
'b' 2 0010
'c' 4 0100
'd' 8 1000
이 열에 값 9를 할당하면 2 진수로 1001이므로 첫 번째 및 네 번째 SET 값 멤버 ‘a’및 ‘d’가 선택되고 결과 값은 ‘a, d’가됩니다.
