【问题标题】:How to find all tables whose integer columns have reached max values?如何查找整数列已达到最大值的所有表?
【发布时间】:2015-02-25 05:44:11
【问题描述】:

我的主键是一个整数。 我收到错误 #1062 - 下次插入时键 'PRIMARY' 的重复条目 '4294967295'。

原因:显然达到了最大值。

有什么办法可以找到整数列已达到最大值或接近最大值的所有表以避免此类错误

【问题讨论】:

标签: mysql mysql5


【解决方案1】:

查询:

SELECT 
      id, IF(max(id)<4294967295, 'true', 'false') as insert_flag
FROM Table

注意:我已经检查了上面的查询,max id 的值是否小于 然后是 Int Range (4294967295)。查询返回真假 insert_flag 列。您可以在插入之前在代码中检查这一点。

【讨论】:

  • 我正在寻找扫描数据库中的所有表
  • 你可以用这个查询一张一张的扫描所有的表。
【解决方案2】:

如果您将id 称为某种AUTO_INCREMENT 字段,那么您可以使用show table status 获取所有表的此信息(请使用help show table status 了解更多详细信息)。

例如

mysql> show table status \G
*************************** 1. row ***************************
           Name: test_table
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 65536
      Data_free: 0
 Auto_increment: 2
    Create_time: 2014-11-07 13:17:16
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.00 sec)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 2011-05-09
    • 1970-01-01
    • 2011-04-28
    • 2019-08-31
    • 2019-09-14
    • 2018-09-13
    相关资源
    最近更新 更多