まるまるこふこふ

数々の次元が崩壊し、全ての生命が塵と化すのを見てきた。私ほどの闇の心の持ち主でも、そこには何の喜びも無かった。

sails で migrate されるテーブルのカラムの型定義

さいです。

サーバーサイドのフルスタックMVCフレームワークの sails.js を触ってます。
フルスタックなので migrate 機能があります。
モデル定義するだけで、アプリケーション起動時に自動でテーブル作ってくれるヤツですね。

sail.js のモデルは Waterline なのですが、どのストレージでも同じ型定義で記載できるよう、
integer とか string とかそんな型定義しかありません。

具体的に MySQL でどんな型になるんや!となったので調べました。

Watarline の型定義 -> MySQLの型定義の変換は sails-mysqlモジュールの
lib/sql.js にあります。

v0.12.1 時点だと以下のようになってるっぽいです。(大文字小文字問わない)

type size MySQL上の型
string N(省略した場合 255) varchar(N)
text LONGTEXT
array LONGTEXT
json LONGTEXT
mediumtext mediumtext
longtext longtext
boolean BOOL
integer 8 TINYINT
integer 16 SMALLINT
integer 32(デフォルトサイズ) INT
integer 64 BIGINT
float FLOAT
double FLOAT
decimal DECIMAL
date DATE
datetime DATETIME
time TIME
binary BLOB

ざっと見たけど、 unsigned を数値に設定する方法はないっぽかった。。。