プロが教えるわが家の防犯対策術!

バージョンを3から5にしたのですが、
フィールドがa、b、c、とあり
3のときは、
INSERT INTO test SET a='aaa' b='aaa'
とすれば、cには何も入らずにaとbのみ格納できたのですが、
5のときは
cに何も格納しないとエラーが出てしまいます。
なので、
INSERT INTO test SET a='aaa' b='aaa' c=''
のように回避するしかないのでしょうか?

A 回答 (4件)

#1です。



MySQLは、Default未設定でも、自動割当が行われるようなので、そのエラーは出ない(場合が多い)はず。


このサイトに書いてある設定がなされていますか?
http://kawama.jp/archives/2005/12/mysql_error_13 …

>sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

この回答への補足

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
これを
sql-mode=
のようにして再起動したら解決しました!
ありがとうございました

補足日時:2007/02/05 17:36
    • good
    • 0

#1です。



>MySQL3→MySQL5にしたのですが、INSERTの仕様変更?
という質問主旨からすると、「わかりません」としか言いようがないです。
MySQL3の体験がないので。

>cに何も格納しないとエラーが出てしまいます。
わたしの環境ではエラーとならず、MySQL5.0の仕様上では問題がないSQLと思えます。

となれば、#2さんの仰る通り、エラー内容が重要になってくると思うんです。
加えて、該当のテーブル情報が必要になってくるかもしれませんね。

質問の主旨以外は知りたくない、というのであればスルーしてください。

この回答への補足

エラー内容は下記にも書いたとおり
Field 'img' doesn't have a default value
と表示されています。

補足日時:2007/02/05 13:40
    • good
    • 0

>cに何も格納しないとエラーが出てしまいます



どんなエラーなのか、内容を書きましょう。

この回答への補足

エラー内容は
Field 'img' doesn't have a default value
と表示されていました。

補足日時:2007/02/05 13:39
    • good
    • 0

Update文と混同されている?と思ったんですが、できるんですねぇ。



当方の使用バージョンは、5.0.27-standardです。
エラーになると仰る類似のコマンドは、当方環境では正常終了しました。
Update文同様で、カンマが必要ということでしょうか。

mysql> create table test2 (c1 char(1),c2 char(1),c3 char(1));
Query OK, 0 rows affected (0.08 sec)

mysql> desc test2;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c1 | char(1) | YES | | NULL | |
| c2 | char(1) | YES | | NULL | |
| c3 | char(1) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+

mysql> insert into test2 set c1='3', c2='3';
Query OK, 1 row affected (0.01 sec)

mysql> select * from test2;
+------+------+------+
| c1 | c2 | c3 |
+------+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | NULL |
+------+------+------+
3 rows in set (0.00 sec)


ちなみにカンマなしだと・・・

mysql> insert into test2 set c1='4' c2='4';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'c2='4'' at line 1

この回答への補足

すみません、正確にはカンマありです。
PHPから実行しているため、
INSERT INTO diary SET num='$num',id='$id',title='$title',map='$map',comment='$comment',date='$date',n='$n',e='$e',view='$view'
となっていて、フィールドにはあとimgというものがあります。

補足日時:2007/02/05 00:48
    • good
    • 0

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