tinyint(1)
tinyint(1)
は明確に公式でBOOLと書いてあります。
BOOL, BOOLEAN | TINYINT | See TINYINT, above as these are aliases for TINYINT(1), currently.
https://dev.mysql.com/doc/connectors/en/connector-j-reference-type-conversions.html
数値型の属性
しかしこちらのドキュメントにはこうも書いてあります。
表示幅は、カラムに格納できない値の範囲を制約しません。
https://dev.mysql.com/doc/refman/5.6/ja/numeric-type-attributes.html
unsignedと違って型に数値を与えても制約を行うことができません。なので0,1以外にも数値を入れられてしまいます。
困る場合
SQLを直接叩く場合などは困りません。
しかし、ライブラリを使用する場合は tinyint(1)
はBOOLが前提条件となっている場合があります。
JDBCもそうで、 tinyInt1isBit
というオプションがあります。デフォルトでtrueとなっているので数値として扱う場合は false
を設定します。
https://dev.mysql.com/doc/connectors/en/connector-j-reference-configuration-properties.html