我需要找到具有auto_increment列的mysql数据库模式中的所有表。
我需要能够将所有这些表设置为一个较大的auto_increment值,以便不重叠将要添加到的基本数据(百万?)。
我知道这是一个坏主意,但我不希望基本数据超过每桌1000个项目。
答案 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具有特定大小,因此我可以将长度增加到“中途”。