【发布时间】:2015-02-25 05:44:11
【问题描述】:
我的主键是一个整数。 我收到错误 #1062 - 下次插入时键 'PRIMARY' 的重复条目 '4294967295'。
原因:显然达到了最大值。
有什么办法可以找到整数列已达到最大值或接近最大值的所有表以避免此类错误
【问题讨论】:
我的主键是一个整数。 我收到错误 #1062 - 下次插入时键 'PRIMARY' 的重复条目 '4294967295'。
原因:显然达到了最大值。
有什么办法可以找到整数列已达到最大值或接近最大值的所有表以避免此类错误
【问题讨论】:
查询:
SELECT
id, IF(max(id)<4294967295, 'true', 'false') as insert_flag
FROM Table
注意:我已经检查了上面的查询,max id 的值是否小于 然后是 Int Range (4294967295)。查询返回真假 insert_flag 列。您可以在插入之前在代码中检查这一点。
【讨论】:
如果您将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)
【讨论】: