2011-09-18 10 views
7

때마다 내 데이터베이스에 삽입 문을 만들려고합니다. "10 진수 값이 잘못되었습니다 : '행 1에서'bounty3 '열에'NULL '오류가 발생합니다. 10 진수 데이터 유형에 null 값을 삽입하려면 어떻게합니까? 방금 기본값을 0.00으로 설정해야합니까?MySQL - 십진수는 NULL이 될 수 없습니다.

Incorrect decimal value: '' for column 'bounty3' at row 1 Whole query: INSERT INTO songs (userid, wavURL, mp3URL, genre, songTitle, BPM, insWanted, bounty, insWanted2, bounty2, insWanted3, bounty3, insWanted4, bounty4, insWanted5, bounty5, insWanted6, bounty6, insWanted7, bounty7, insWanted8, bounty8, insWanted9, bounty9, insWanted10, bounty10) VALUES ('12534545', '/audio/wav/jqmrgpfcMichael/135259578210secreason.wav', '/audio/mp3/jqmrgpfcMichael/135259578210secreason.mp3', 'Rock/Funk', 'titlee', '120', 'bass', '20.00', 'guitar', '20.00', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '') 

나는이 문을 NULL 값으로 시도했다. 다음은 오류입니다.

Incorrect decimal value: 'NULL' for column 'bounty3' at row 1 Whole query: INSERT INTO songs (userid, wavURL, mp3URL, genre, songTitle, BPM, insWanted, bounty, insWanted2, bounty2, insWanted3, bounty3, insWanted4, bounty4, insWanted5, bounty5, insWanted6, bounty6, insWanted7, bounty7, insWanted8, bounty8, insWanted9, bounty9, insWanted10, bounty10) VALUES ('12534545', '/audio/wav/jqmrgpfcMichael/143922765110secreason.wav', '/audio/mp3/jqmrgpfcMichael/143922765110secreason.mp3', 'Rock/Funk', 'title', '110', 'bass', '110.00', 'guitar', '20.00', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL') 
+0

데이터를 삽입하는 코드/mysql 문을 붙여 넣을 수 있습니까? –

+1

테이블 정의가 해당 열에 NULL 값을 허용하는지 확인하십시오. 그래도 코드와 데이터 정의가 도움이되지 않는다면 – Eelke

+0

insert 문을 업데이트했습니다. 'NULL'값이 지워졌으므로 이제이 오류가 발생합니다. – user547794

답변

5

기본값을 원할 경우 공백을 사용하십시오.

+0

나는 이것도 NULL 값으로 시도했다. 업데이트를 참조하십시오. – user547794

+0

-1 열을 기본값으로 선언하면 'null'을 삽입하면 기본값이 사용됩니다. OP는'not null' 칼럼에 기본값을 선언하지 않았기 때문에 ** 에러가 발생합니다. 빈'' '** 삽입 **은 기본값을 삽입하지 않습니다 **. '0'을 삽입합니다. – Johan

+0

여전히 -1이지만 분명히 OP는 십진수에''null ''을 삽입하고 MySQL이''null '이고 n.u.l.l로 채워진 문자열이 아니라는 것을 예상합니다. – Johan

0

데이터베이스 스키마가 해당 열에 NULL 값을 허용하는지 확인해야합니다. MySQL 클라이언트에서 describe <tablename>;을 실행하여 해당 테이블의 스키마가 무엇인지 확인하십시오.

스키마에서 null을 허용하지 않으면 alter table을 사용하여 스키마를 변경할 수 있습니다. 해당 열에 NOT NULL을 지정하지 않았 으면 잘되어야합니다.

11

아 .. 빈 문자열 '을 (를) bounty3에 삽입하려고합니다. 이를 NULL로 바꾸십시오. 또한 다른 가능한 숫자 값 (예 : bonty4)에 대해 빈 문자열을 발견했습니다. 숫자 값의 경우 빈 문자열을 모두 NULL로 바꿔야합니다.

예 : mysql_query ("INSERT INTO empty_number, number VALUES (NULL, 1)");

편집 : HEY HEY 포인트를 얻을, 당신은 'NULL'이 문자열이기 때문에, 당신은 당신이 쿼리를 실행할 수 있습니다

1

모든 인용 부호없이 NULL을 삽입해야 같은 숫자 값으로 NULL을 삽입 할 수 없습니다 'bounty3'필드에 NULL 값을 허용합니다.

변경 테이블 songs 변경 bounty3bounty3 DECIMAL (10,0) NULL;

+0

이 필드에 NULL을 허용합니다. 그것은 단지 10 진수 데이터 유형에 대해 작동하지 않는 것 같습니다 (금융 거래에 필요하다고 생각합니다 ...) – user547794

3

MySql 5.1.61에서이 문제를 다뤘습니다. 서버가 엄격 모드 인 경우 십진수 필드에 ''대신 0을 입력해야합니다. 엄격 모드를 사용하지 않으면 NULL 값을 채우기 위해 ''할 수 있습니다.

0

필드 유형이 NULL 값을 허용하고 기본값이 NULL인지 확인하십시오.

그런 다음 사용

UPDATE table_name SET date_field=IF('$date_value'='',NULL,'$date_value') 

이 삽입이나 업데이트에 적용됩니다.

$date_value = NULL을 사용해 보았습니다. 삽입하거나 업데이트하기 전에 unset($date_value)을 시도해 보았습니다. 그리고 그것은 십진수 필드에서 작동하지 않았습니다. MySQL은 항상 0.00으로 변환했다. 위의 방법은 저에게 효과가있는 유일한 해결책이었습니다.

$conn->bindParam(':'.$valor, ($key[0] ? $key[0] : NULL), PDO::PARAM_STR); 
0

덕분에, 그것은 빈 때 NULL을 사용했다. 이 방법으로, MySQL은이 필드를 NULL로 인식하고 0으로 변환하지 않습니다.

0

또 다른 옵션은 MySQL의에서 가져 오기 전에 원본 데이터에서 빈 셀 또는 필드가 'NULL'을 포함하고 있는지 확인하는 것입니다 :

관련 문제