一个BS系统,MYSQL表中有个id字段,int 型,int 型的最大值2147483647 
但我这个系统有点特殊,每天需要删除几千条记录,又要增加几千条记录
这样,ID字段的值不断增大, 按照现在的速度,再过两年就要超过2147483647 虽然我的表中总记录数只有几万条,但这样不断删除插入,ID值过大了怎么办? 会不会又从1开始?  因为ID=1的记录早就删除了.

解决方案 »

  1.   

    过了会,报错。建议不要使用INT型 改为BIGINT。
      

  2.   

    2个方法:
    1.重新排列你的自增列
    2.将字段类型改成bigint个人介意第一种方法 因为第二种也许会治标不治本
      

  3.   

    可以加一个unsigned属性 -> 数量就翻一倍或者如狼头 所说 改bigint unsigned 
      

  4.   


    請問如何重新排列?重列排列會不會改變已有記錄ID,因為可能有些記錄ID會被其它表引用
      

  5.   

    bigint不治本的说法似乎不太适用这里,难道楼主的系统会跑100亿年?
    除非情况真到了那里,否则,bigint就够了。
      

  6.   

    重新序列化话 确实会改变你的ID ...看来这个不适合你了...现在你的处理方向2个:
    1.你不想改变你的id并且你要它随着记录的插入不断增大id 那么请修改你现在的字段类型 要么在字段类型假设unsigned修饰符 要么修改你的字段类型为bigint2.你想插入的记录会自动补全你空缺的id值
      情况1:如果只是从顶部删除了一些数据 并且你想继续从顶部最大的值添加。比如你有从1-100的记录行,现在你删除了91-100的记录,你继续添加记录,你想id值从91开始,也就是新记录的id值从91开始,myisam和innodb引擎表可以这样:alter table tbname auto_increment=1;
      情况2:如果已经含有断层 使用这个方法,只能补上最大的断层。
    比如1-10的记录 删除3 7 2个记录 只能补上7 不能补上3