如何查找所有auto_increment表

时间:2014-11-14 16:10:03

标签: mysql auto-increment

我需要找到具有auto_increment列的mysql数据库模式中的所有表。

我需要能够将所有这些表设置为一个较大的auto_increment值,以便不重叠将要添加到的基本数据(百万?)。

我知道这是一个坏主意,但我不希望基本数据超过每桌1000个项目。

3 个答案:

答案 0 :(得分:2)

use information_schema;
select table_name 
from tables 
where auto_increment is not null and table_schema=...;

然后,您可以按照Change auto increment starting number?

设置自动增量值

或者,一次性(假设是Unix shell):

mysql information_schema -e 
'select concat ("ALTER TABLE ",table_name," AUTO_INCREMENT=1000000") `-- sql` 
from tables 
where auto_increment is not null and table_schema="your-schema";
'|mysql your-schema

答案 1 :(得分:0)

部分答案...... this will find all the columns with auto_increment

SELECT 
    * 
FROM 
    `information_schema`.`COLUMNS`
WHERE 
    `EXTRA` = 'auto_increment' AND 
    `TABLE_SCHEMA` = 'foochoo'

答案 2 :(得分:0)

这是我使用的,所有可执行文件都来自mysql cli。

use information_schema;
SELECT concat ("ALTER TABLE `",table_name,"` AUTO_INCREMENT=",IF(DATA_TYPE='smallint',15000,IF(DATA_TYPE='tinyint',64,IF(DATA_TYPE='mediumint',4000000,IF(DATA_TYPE='int',1000000000,99999999999999)))),";")
FROM `COLUMNS` WHERE extra LIKE '%auto_increment%' and table_schema='myschema'
INTO OUTFILE '/tmp/auto.sql';
use izon;
source /tmp/auto.sql;

这允许每个data_type具有特定大小,因此我可以将长度增加到“中途”。