6

私はで実行MySqlしていubuntu 10.10ます。empno、name、salaryの'employee'3つのフィールド名を持つというテーブルを作成しました。いくつかのエンティティを挿入しました。プロセスの途中で、給与属性をとして変更したいと思います。テーブルを次のように変更します'NOT NULL'

ALTER TABLE employee MODIFY salary int(10) NOT NULL;

クエリが実行されました。コマンドを使ってテストしたかったのですが、

UPDATE employee SET salary=NULL;

Query OK, 15 rows affected, 15 warnings (0.06 sec)
Rows matched: 15  Changed: 15  Warnings: 15

警告も出しました " (Code 1048): Column 'salary' cannot be null "(行ごとに繰り返されます)

しかし、私のテーブルを見たとき、すべての給与はZeros('0')でした。

同じクエリを実行すると、WINDOWSXPのMySqlで警告ではなくエラーが発生します

INNODBエンジンとMYISAMエンジンの両方をチェックインしましたが、結果は同じです。処理以外に何が起こったのかを知るのを手伝ってください。

4

2 に答える 2

12

SQL_MODEubuntuのインストールでstrictに設定してはいけません。

問題

SET SQL_MODE='STRICT_ALL_TABLES'

または追加

SQL_MODE='STRICT_ALL_TABLES'

[mysqld]からmy.cnf上へUbuntu

于 2012-05-22T13:40:46.803 に答える
4

問題はありません。列をNOT NULL, (NULL 値は許可されません) に設定するNULLと、予期される動作である に設定できなくなります。

DB に 0 がある理由は、0 が NULL を int にキャストした結果になるためです。

于 2012-05-22T13:18:07.487 に答える