2009年 10月 29

MySQL4.xでは大丈夫だったけど、MySQL5.xに移行してから起こった出来事。

整数型カラムをUNSIGNEDして利用している時、負の数にならないのをいい事に0から減算して負の数の場合は0と自動で処理してくるものだと思っていた。(MySQL4.x時にはそのように処理されていた。)

本当はプログラム側で処理するべきなのかもしれないけれど、楽してそのようなスクリプトを書いていた。

で、先日MySQL5.xの環境に移行したらデータがおかしくなっていた。

とてつもなく大きな数字となっており???状態。

どうやら、UNSIGNEDしているカラムが0で、そこから1を引くと4294967295のような値になってしまうようだ。

これを回避するにはコマンドラインオプションで

–sql-mode=NO_UNSIGNED_SUBTRACTION

とするか、SQL発行時に

SET SQL_MODE=’NO_UNSIGNED_SUBTRACTION’;

とすると大丈夫のようだ。

参考: http://mlog.euqset.org/archives/ml@mysql.gr.jp/14844.html

More from my site

  • CentOS5.3 PostfixをMySQL対応にするCentOS5.3 PostfixをMySQL対応にする 2013-01-13追記 MySQL対応のPostfixはCentOS Plusリポジトリを使えばyumでupdate出来るみたい。こっちの方がいいね。 CentOS Plusリポジトリを有効にする # vi /etc/yum.repos.d/CentOS-Base.repo [centosplus] name=CentOS-$releasever […]
  • DBIx::Customでデータベースの関数(MySQLのADDDATE()とかSUBDATE()とか)を使うDBIx::Customでデータベースの関数(MySQLのADDDATE()とかSUBDATE()とか)を使う DBIx::Customが生SQL感覚でも使えてお気に入りなのだけれど、ちょっこしハマったのでメモ。 DBIx::Custom - search.cpan.org MySQL(に限らないと思う)でwhereに関数を利用したい時は多々あると思います。 例えば、更新時刻を見て7日以上古ければ選択しないという条件をwhereに指定したい時、 CREATE […]
  • 連続で大量のデータをINSERTする実験連続で大量のデータをINSERTする実験 PERLでMySQLにデータを挿入する実験。 実験スクリプト INSERT を100万回繰り返す。 for(1..1000000){ $sql = <<"EOM"; INSERT INTO `table_name` (`col1`,`col2`,`col3`,`col4`) VALUES […]
  • [Perl] DBIx::SkinnyでGROUP BY句を使うには[Perl] DBIx::SkinnyでGROUP BY句を使うには ※何故か記載が全体的にORDER BY句になっていたので修正... DBIx::SkinnyでGROUP BY句を使う DBIx::SkinnyでGROUP […]
  • DBIx::Skinny の resultset を使って変な ORDER BY 句を使えるかの実験DBIx::Skinny の resultset を使って変な ORDER BY 句を使えるかの実験 WHERE id IN(4,3,1) OREDER BY FIELD(id,4,3,1) こんなSQLの書き方があったのか! RT: MySQL - SELECT ... WHERE id IN (..) - correct orde stackoverflow.com/questions/5090…— クリックテクスさん (@clicktx) […]
  • groonga対応のMySQLをMAMPで使ってみる。groonga対応のMySQLをMAMPで使ってみる。 MAMP ApacheもMySQLも常時起動しておくのは微妙だし、でも使う時にはサクッと使いたい。そんな時にMAMPがあればローカルのApacheとMySQLを自動で起動してくれるから便利。phpMyAdminもついてるしね。 インストールメモはこっち。 で、MAMPデフォルトのMySQLではなく、先日インストールしたmroonga対応のMySQLをMANPで使える […]

Filed under: MySQL

Trackback Uri



コメントする