2011-09-18 11 views
7

毎回私のデータベースに挿入文を作成しようとすると、「10進値が正しくありません:列1のbounty3 'にNULLが入ります」というエラーが表示されます。 10進数のデータ型にnull値を挿入するにはどうすればよいですか?私はちょうどデフォルト値0.00を作るべきですか?MySQL - 10進数は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

データを挿入するcode/mysqlステートメントを貼り付けてください。 –

+1

テーブル定義でその列のNULL値が許可されていることを確認してください。それがあなたのコードとデータ定義を示すのに役立たないならば。 – Eelke

+0

私は自分のinsertステートメントを更新しました。私は 'NULL'の値を消去し、今私はこのエラーが発生しています。 – user547794

答えて

5

デフォルト値を使用する場合は空白を使用してください。

+0

これもNULL値で試しました。アップデートを参照してください。 – user547794

+0

-1カラムをデフォルト値で宣言した場合、 'null'を挿入すると、デフォルトが使用されます。 OPは 'not null'カラムにデフォルトを宣言していないので、エラーが出されます。空白 '''を挿入すると、デフォルト値が挿入されません。それは '0'を挿入します。 – Johan

+0

でも-1ですが、OPは10進数に '' null ''を挿入していて、MySQLが '' null'で、n.u.l.lで埋められた文字列ではないことを期待しています。 – Johan

0

データベーススキーマでその列のNULL値が許可されていることを確認する必要があります。 MySQLクライアントにdescribe <tablename>;を実行して、そのテーブルのスキーマを確認します。

スキーマでnullを許可しない場合は、alter tableを使用してスキーマを変更できます。その列にNOT NULLを指定していないことを確認してください。

11

ああ、あなたは空の文字列 ''をバウンティ3に挿入しようとしています。それをNULLに置き換えます。私はまた、他の可能な数値、例えばbonty4の空文字列に気付きました。数値の場合は、空の文字列をすべてNULLに置き換える必要があります。

例:mysql_query( "INSERT INTO empty_number、number VALUES(NULL、1)");

EDIT:これは文字列であるため、HEY HEYポイントを得る、あなたが「NULL」として数値にNULLを挿入することはできません、あなたは任意の引用符なしでNULLとして挿入する必要があり

1

あなたはこのクエリを実行することができます'bounty3'フィールドにNULL値を許可します。

変更表songs変更点bounty3bounty3 DECIMAL(10,0)NULL;

+0

私はこのフィールドにNULLを許可しています。それはちょうど小数のデータ型のために働くようには思われません(私は金融取引に必要と信じています...) – user547794

3

私はこの問題をMySql 5.1.61で処理しました。 サーバーが厳密なモードの場合は、10進数のフィールドには ''の代わりに0を入力する必要があります。厳密モードを無効にすると、 ''を実行してヌル値を入力することができます。

0

フィールドタイプがNULLの値を許可し、デフォルト値がNULLであることを確認してください。

は、次に使用:

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

これは、挿入または更新のために動作します。

私は$date_value = NULLを使用しようとしましたが、挿入または更新する前にunset($date_value)を試したこともあり、小数点のフィールドでは機能しませんでした。 MySQLは常にそれらを0.00に変換しました。上記の方法は私のために働いた唯一の解決策でした。

0

おかげで、それはそれは空になるとNULLを使用して働いていた:

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

別のオプションはMySQLにインポートする前に、あなたの元データで、空のセルまたはフィールドが「NULL」を含めることを確認することです。このようにして、MySQLはこれらのフィールドをのように実際にと認識し、それらを0に変換しません。

関連する問題