- ベストアンサー
PHPMyAdminを使ってインサートすると・・。
最近MySQL5.0.22を使い始めました。 PHPMyAdminを使って手入力でテーブルにデータをインサートしようとすると、#1292のエラーメッセージが出ます。 日付やINTのカラムにデータを入れずにインサートしようとするとこのエラーが出ます。 以前MySQL4.0を使っていた時にはこういった現象はなかったのですが、どのように回避すれば良いのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>以前使っていたMySQL4.0ではこんな事は無かったの >で、何か設定が間違っているのか?もしくは他に対応>の方法があれば、と思っています。 その表は、MySQL 4.0で定義したものを、そのまま使っているのでしょうか? それとも、MySQL 5.0で新たに定義したのでしょうか? MySQLに限らず、SQLの基本的な仕様だと思いますけど? MySQLがバージョン4と5の間で、仕様を変えたのかどうかは分かりかねます。 create table t1 (c1 int, c2 int) 上記のような定義なら、挿入値を省略した列には、nullが格納されます。 「c1 int not null」のように、nullを許さない指定をした場合には、挿入値を省略するとエラーになります。 「c1 int not null default 0」のように、省略時仮定値を指定しておけば、挿入値を省略した列には、その値が入ります。 primary keyを設定した場合は、自動的にnot nullが仮定されます。
その他の回答 (2)
- chukenkenkou
- ベストアンサー率43% (833/1926)
#2回答者です。 ALTER TABLEで、NOT NULLを外してみては? <記述例> 表T1の列C1、C2のNOT NULLを外す。 ALTER TABLE T1 CHANGE C2 C2 INT, CHANGE C3 C3 INT; ※データ型の後に、NOT NULLを書かないことで、外したことになります。 「NOT NULL」→「NOT NULLなし」は、データが格納されていても行えますが、逆はデータが格納された状態では行えません。
お礼
無事うまくいきました。 いろいろとお気遣いいただき、ありがとうございました。
- yambejp
- ベストアンサー率51% (3827/7415)
>PHPMyAdminを使って とありますが、PHPMyAdminを使わなければうまくいく というイミでしょうか?それによって回答は ダイブ変わってくるとおもいます
補足
すいません、その後いろいろやってみたんですが、PHPMyAdminを使う使わないは関係ないです。 カラム「aaa」「bbb」「ccc」があり、プロンプトから「INSERT INTO テーブル名(aaa)VALUES(1)」とすると、「Field 'bbb' doesn't have a default value」というエラーになってしまいます。 要は「INSERT INTO テーブル名(aaa,bbb,ccc)VALUES(1,2,3)」のように全てのカラムにデータを入れた場合のみINSERTが成功する状況です。「bbb」や「ccc」 のカラムタイプがintでもcharでも同様の結果です。 最初からすべてのカラムをNULL設定しておけばエラーは出ないんでしょうが、以前使っていたMySQL4.0ではこんな事は無かったので、何か設定が間違っているのか?もしくは他に対応の方法があれば、と思っています。
お礼
>挿入値を省略した列には、nullが格納されます。 >「c1 int not null」のように、nullを許さない指定をした場合には、挿入値を省略するとエラーになります。 ・・なのですね。 実は以前からテーブルの作成はPHPMyAdminを使っているのですが、そのツールは各カラムはNotNullがデフォになっているため、そのまま全てのカラムをNotNullで定義していました。 ただどういうわけか、SQL4.0では前述のようなカラムを指定したInsertも問題なく行なえていたため、ほとんどそのあたりの定義は意識していませんでした。 回答いただき、どうもありがとうございました。