• ベストアンサー

MySQL3→MySQL5にしたのですが、INSERTの仕様変更?

バージョンを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='' のように回避するしかないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • mooboogie
  • ベストアンサー率68% (28/41)
回答No.4

#1です。 MySQLは、Default未設定でも、自動割当が行われるようなので、そのエラーは出ない(場合が多い)はず。 このサイトに書いてある設定がなされていますか? http://kawama.jp/archives/2005/12/mysql_error_136.html >sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Rasyuki
質問者

補足

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

その他の回答 (3)

  • mooboogie
  • ベストアンサー率68% (28/41)
回答No.3

#1です。 >MySQL3→MySQL5にしたのですが、INSERTの仕様変更? という質問主旨からすると、「わかりません」としか言いようがないです。 MySQL3の体験がないので。 >cに何も格納しないとエラーが出てしまいます。 わたしの環境ではエラーとならず、MySQL5.0の仕様上では問題がないSQLと思えます。 となれば、#2さんの仰る通り、エラー内容が重要になってくると思うんです。 加えて、該当のテーブル情報が必要になってくるかもしれませんね。 質問の主旨以外は知りたくない、というのであればスルーしてください。

Rasyuki
質問者

補足

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

回答No.2

>cに何も格納しないとエラーが出てしまいます どんなエラーなのか、内容を書きましょう。

Rasyuki
質問者

補足

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

  • mooboogie
  • ベストアンサー率68% (28/41)
回答No.1

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

Rasyuki
質問者

補足

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

関連するQ&A