2

MySQL では、整数フィールドのデフォルト値は 0 です。挿入中、そのフィールドの値は NULL であり、NULL が挿入されます。そのフィールドの値を使用して、加算、乗算、除算などの算術操作を行います。NULL が挿入されたため、これはエラーになります。この問題を解決するにはどうすればよいですか? 挿入値がnullの場合、DBはinteger、decimalなどのフィールドのデフォルト値をサポートしません(文字列にはNULLが有効であるため、文字列型には対応していない可能性があります)。そうでない場合、数値型に NULL 値を持つことは正しいですか?

何らかの理由で、NOT NULL および DEFAULT VALUE が 0 の 10 進数フィールドがある場合、「行 1 の列 'Column_Name' のデータが切り捨てられました」というエラー メッセージが表示されて挿入が失敗します。

NOT NULL プロパティを削除すると、挿入は警告と同じメッセージに成功します。

その小数フィールドに挿入される値は、AVG() MySql 関数の結果です。

本当に無知...

その理由は何ですか?

4

5 に答える 5

7

NULLは特定の値であるため、デフォルト値を挿入するには、NULLでさえも、列に値を指定する必要はありません。

于 2009-09-21T09:52:18.450 に答える
5

NULL は、任意の mysql 列/タイプの正しい値です。

列を NOT NULL に設定するか、スクリプト言語で解決する必要があるため、null が挿入されません。

于 2009-09-21T08:54:01.390 に答える
3

NOT NULLこの問題を完全に回避するようにフィールドを設定できます。値が望ましくない場合NULLは、それを行う必要があります。列が の場合NOT NULL、型のデフォルト値 (整数の場合は 0) が の代わりに挿入されますNULL

于 2009-09-21T08:54:40.463 に答える
3

テーブル構造を作成したときに、デフォルト値 '0' をテーブル構造に指定する必要があります。または、次を使用して変更できます。

ALTER TABLE `TableName` CHANGE `FieldName `FieldName` INT( 11 ) NULL DEFAULT '0'

お役に立てれば。

于 2009-09-21T08:56:29.047 に答える
1

計算に問題がない場合は、列の定義を NOT NULL DEFAULT 0 に変更すると、常に適切な整数 (または 10 進数) になります。ただし、古い値を null から 0 に変更することを忘れないでください。

于 2009-09-21T08:56:56.033 に答える