MySQL でカラム種別を tinyint(1) にしてハマッタ

Posted by muchag | CakePHP,MySQL | 2011-08-09 (火) 19:10:38

MySQL でカラム種別を tinyint(1) にしてハマッタ。

【環境】
[CakePHP] 1.3.10
状況
  1. $user['id'] = $id;
  2. $user['name'] = $name;
  3. $user['present'] = 2;
  4.  
  5. $this->User->save($user);

このスクリプトで、何度試してもデータを保存できなかった。
 

原因

あれこれ試した結果

  1. $user['present'] = 0;
  2.  
  3. または
  4.  
  5. $user['present'] = 1;

これだと保存できることがわかった。

因みに、present カラムは、オンオフフラグのため tinyint(1) としている。
 

実験

確かに元々 0 or 1 のみ入力するために作成したカラムなんだけど
テスト用に目立つ 2 を保存しようとしたらアウト。
5 で試してもだめだった。
 

MySQL には知能がある?

ん~、MySQL さんは、私のカラム定義の意図を汲み取ってくれちゃったの?
 

結論

よくわからないけど、わからないからこそメモ・・・。

CakePHP,MySQL | 2011-08-09 (火) 19:10:38 |

2 Comments »

  1. Comment by とおりすがり — 2011/9/11 日曜日 @ 23:37:04

    cakephpでtinyint(1)を使用すると、bool用だと判断し、0以外は全て1として保存するという仕様らしいですよ。

  2. Comment by muchag — 2011/10/6 木曜日 @ 9:45:06

    はじめまして、コメントをありがとうございます。

    > cakephpで・・・仕様らしいですよ。

    どうやらそうらしいですね><
    勉強になりました。

RSS feed for comments on this post. TrackBack URI

Leave a comment