因此,我创建了一个数据表,要求用户提供移动提供商(varchar),电话号码和PIN码。该表似乎运行良好,但当用户输入电话号码时,原始号码转换为2147483647.我花了一些时间环顾四周,我了解到这是因为我已经超出了32位的限制在我的桌子上。为了解决这个问题,我需要在MYSQL数据库中使我的整数限制大于10(我原来的)。
我使用PhpMyAdmin更改了MYSQL表;但是,我仍然遇到同样的问题。这是因为我现在需要在Yii-end上改变一些东西吗?
我知道我可以使用CRUD来构建新的MVC关系 - 但我已经在模型和控制器中添加了很多功能。有没有办法让Yii以零碎的方式更改我的数据库?即不必使用Crud?
答案 0 :(得分:3)
尽管电话号码簿(DN)类似于整数,但使用任意宽度的整数来存储DN这一事实确实是非常糟糕的做法。
这是因为,正如您所发现的那样,被操纵的DN有时会被破坏。
使用32位数字存储北美拨号计划号码(加拿大,加勒比海,美国)是不正确的。在429区号的中途,即使您设法使用无符号整数,您的数字也会被破坏。
使用varchar(20),你会没事的。
以下是需要考虑的事项:ITU-T建议E.123用于表示电话号码。 http://en.wikipedia.org/wiki/E.123
答案 1 :(得分:-2)
INT
仍然是一个32位数字,(10)
中的INT(10)
是一个人工上限,对于说明ZEROFILL
应填写的距离非常有用。
尝试BIGINT(10)
,因为这将允许所有10位数字,即使是那些高于2 31 -1