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
似乎是更合适的数据类型。
这里是我的 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
似乎是更合适的数据类型。