Zend DB Table 元数据 returns 整数列长度为空

Zend DB Table Metadata returns null for integer column length

这里是我的 phonenumber 列的输出结果,长度为整数 15:

 array (size=14)
 'SCHEMA_NAME' => null
 'TABLE_NAME' => string 'companies' (length=9)
 'COLUMN_NAME' => string 'phonenumber' (length=11)
 'COLUMN_POSITION' => int 13
 'DATA_TYPE' => string 'int' (length=3)
 'DEFAULT' => null
 'NULLABLE' => boolean false
 'LENGTH' => null
 'SCALE' => null
 'PRECISION' => null
 'UNSIGNED' => null
 'PRIMARY' => boolean false
 'PRIMARY_POSITION' => null
 'IDENTITY' => boolean false

我使用的是 Zend Framework 1.12 版。

INT 是一个 32 位有符号整数,能够存储 -2147483648 到 2147483647 范围内的值。最大可能长度为 11。

https://dev.mysql.com/doc/refman/5.6/en/integer-types.html

我不知道 Zend 是否根据长度做了任何额外的处理,但从 MySQL 的角度来看,数字列上的 "length" 属性是 fixed 时代的遗留功能-width 终端,给应用程序一个关于最长可能显示值的提示。它不限制实际存储的数据。

https://dev.mysql.com/doc/refman/5.6/en/integer-types.html

无论如何,电话号码并不是真正的整数。它们是具有语义意义的数字串,固定在左侧(例如国家代码、国际城市代码、美国的 NPA/NXX 区域 code/prefix),因此最有价值的排序顺序是词汇顺序,而不是数字,因此适当长度的 VARCHAR 似乎是更合适的数据类型。