概要
今までLaravel + MySQLを主に使ってきて最近Laravel + PosgreSQLを使っている。どうやらPosgreSQLにTINYINT型が存在しないらしく勝手に衝撃を受けたのでまとめておく。
PostgreSQLにTINYINTは存在しない
上記をみて驚いた。MySQLのようにTINYINTがあると思ってた。最小がSMALLINTで±32767の間の数値が格納可能らしい。
更にいうとUNSIGNED(符号なし)もないらしい。
PostgraSQL使ってるときにマイグレーションでtinyIntとかを指定したらどうなるの?
SMALLINTに勝手に変換されてカラム定義される。
もちろんいくらマイグレーション側でunsignedTinyIntとか指定しても符号ありのSMALLINTのカラムができる。
なのでマイグレーションだけをみて「unsignedTinyIntだから最大値255だな」とか思わない方がいい。なれないうちはちゃんとDBを見に行ってデータ型を確認したほうがいい。
参考までにMySQLの整数型の値範囲の参考リンクを載せておく。