アプリ版:「スタンプのみでお礼する」機能のリリースについて

最近MySQL5.0.22を使い始めました。
PHPMyAdminを使って手入力でテーブルにデータをインサートしようとすると、#1292のエラーメッセージが出ます。
日付やINTのカラムにデータを入れずにインサートしようとするとこのエラーが出ます。
以前MySQL4.0を使っていた時にはこういった現象はなかったのですが、どのように回避すれば良いのでしょうか?

A 回答 (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が仮定されます。
    • good
    • 0
この回答へのお礼

>挿入値を省略した列には、nullが格納されます。

>「c1 int not null」のように、nullを許さない指定をした場合には、挿入値を省略するとエラーになります。

・・なのですね。
実は以前からテーブルの作成はPHPMyAdminを使っているのですが、そのツールは各カラムはNotNullがデフォになっているため、そのまま全てのカラムをNotNullで定義していました。
ただどういうわけか、SQL4.0では前述のようなカラムを指定したInsertも問題なく行なえていたため、ほとんどそのあたりの定義は意識していませんでした。

回答いただき、どうもありがとうございました。

お礼日時:2006/07/03 23:25

#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なし」は、データが格納されていても行えますが、逆はデータが格納された状態では行えません。
    • good
    • 0
この回答へのお礼

無事うまくいきました。
いろいろとお気遣いいただき、ありがとうございました。

お礼日時:2006/07/06 23:20

>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ではこんな事は無かったので、何か設定が間違っているのか?もしくは他に対応の方法があれば、と思っています。

補足日時:2006/07/03 06:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!