2017-05-04 16:11:55 3139次浏览 3条回答 0 悬赏 10 金钱

select * from table where code_id=56856987458565845; yii无法运行这个sql,有人遇到过这个问题吗,整型超过11位就出问题了,

insert into table (code_id) values (56856987458565845); 通过save()方法添加数据也是不行,入库后直接变成了负数了

  • 回答于 2017-05-04 16:17 举报

    数据库设置成字符串试试

    8 条回复
    回复于 2017-05-04 16:18 回复

    把bigint设成字符串就可以了,可是上面要我设成bigint,烦

    回复于 2017-05-04 16:20 回复

    必须是bigint吗 再大不行吗

    回复于 2017-05-04 16:22 回复

    因为这个字段存放的东西是,数字13位到20位之间,哎,

    回复于 2017-05-04 16:28 回复

    TYPE_BIGINT 字段,如果是在64位环境下,且该字段并非为 unsigned 时,PHP的 integer 足够存储。但是,在32位环境下,PHP的 integer 只有4个字节,不够存储8个字节的 TYPE_BIGINT 。而如果字段是 unsigned 的,由于PHP并没有 unsigned 一说,就算是 64位环境,也少了1 bit。在不够存储时,就只能选用PHP的 string 类型了。
    http://www.digpage.com/db_datatype.html

    回复于 2017-05-04 16:59 回复

    但是我的linux是64位的啊,那么应该是8个字节,最大值位9223372036854775807才对啊,而且直接运行sql是可以的,使用save方法就不行了

    回复于 2017-05-04 17:03 回复

    要不你看日志 或者打断点吧 估计就是Yii的ORM处理了什么东西

    回复于 2017-05-05 10:57 回复

    日志打印的sql,用来直接运行是没问题的,真不明白,只要经过save方法就不行了

    回复于 2017-05-05 14:19 回复

    你到最终sql了吗 就是执行的最终sql

  • 回答于 2017-05-06 12:47 举报

    看看save有没有重写,验证有没有影响,试试save(false)

  • 回答于 2017-06-19 16:54 举报

    整数溢出,设置字段类型大点就可以了

您需要登录后才可以回答。登录 | 立即注册
o__荒年
总监

o__荒年

注册时间:2015-01-17
最后登录:2019-06-29
在线时长:32小时27分
  • 粉丝6
  • 金钱2395
  • 威望40
  • 积分3115

热门问题