mysql 中实现 bool 类型的字段,一般是使用 tinyint(1)
但是有些地方,会使用 enum('true','false') 实现 bool
Q:那么,peewee 的 BooleanField 类型翻译为 mysql 的 DDL 的时候,是翻译为 tinyint(1) 还是 enum('true','false') 呢?
A:答案是 tinyint(1)
参考:
常见问题 QA
Q:对于 mysql,tinyint(1) 和 tinyint 有区别吗?应该没有吧
A:在MySQL中,tinyint和tinyint(1)在语义上是相同的,它们都是用于表示小整数值的数据类型。在实际使用中,这两种类型的表现是一样的,它们都占用一个字节的存储空间,并可以存储-128到127之间的整数值(如果是无符号类型,则可以存储0到255之间的整数值)。
然而,在MySQL 8.0之前的版本中,tinyint(1)的行为略有不同。在这些旧版本中,当使用tinyint(1)定义列时,MySQL将该列解释为一个布尔类型(BOOL或BOOLEAN),而不是整数类型。也就是说,tinyint(1)被视为只能存储0或1的类型。但是,在MySQL 8.0中,tinyint(1)的行为已经改变,它被视为一个普通的整数类型,与tinyint完全相同。
因此,在MySQL 8.0及以上版本中,tinyint(1)和tinyint是相同的,它们都表示一个占用一个字节存储空间的小整数值。但是,如果您正在使用MySQL 8.0之前的版本,则应该注意tinyint(1)与tinyint之间的差异,并了解tinyint(1)被解释为布尔类型的行为。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。