par*_*ars 30 mysql replication
可以通过设置/重置AUTO_INCREMENTMySQL表的值
ALTER TABLE some_table AUTO_INCREMENT = 1000
但是我需要设置AUTO_INCREMENT其现有值(以修复MM复制),例如:
ALTER TABLE some_table SET AUTO_INCREMENT = AUTO_INCREMENT + 1 这是行不通的
实际上,我想对数据库中的所有表运行此查询.但实际上这并不是非常重要.
除了手动运行查询外,我找不到解决此问题的方法.请你提出一些建议或指出一些想法.
谢谢
OMG*_*ies 42
使用:
ALTER TABLE some_table AUTO_INCREMENT = 0
Run Code Online (Sandbox Code Playgroud)
...将auto_increment值重置为auto_increment列中现有最高值的下一个值.
要在所有表上运行此操作,您需要使用名为PreparedStatements的MySQL动态SQL语法,因为您无法将ALTER TABLE语句的表名作为变量提供.你必须循环输出:
SELECT t.table_name
FROM INFORMATION_SCHEMA.TABLES t
WHERE t.table_schema = 'your_database_name'
Run Code Online (Sandbox Code Playgroud)
...为每个表运行上面的ALTER TABLE语句.
the*_*uts 15
set @db = 'your_db_name';
SELECT concat('ALTER TABLE ', @db, '.', TABLE_NAME, ' AUTO_INCREMENT = 0;')
FROM information_schema.TABLES WHERE TABLE_SCHEMA = @db AND TABLE_TYPE = 'BASE TABLE'
Run Code Online (Sandbox Code Playgroud)
然后复制粘贴并运行您获得的输出.
在下面的说明中,您需要使用正确的值替换[方括号]中的所有内容.在尝试之前备份.
如果你可以通过命令行以root用户身份登录mysql,那么你可以执行以下操作来重置所有表的auto_increment,首先我们将构建我们想要运行的查询:
进行数据库备份:
mysqldump -u [uname] -p [dbname] | gzip -9 > [backupfile.sql.gz]
Run Code Online (Sandbox Code Playgroud)
登录:
mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
将group_concat_max_length设置为更高的值,以便我们的查询列表不会被截断:
SET group_concat_max_len=100000;
Run Code Online (Sandbox Code Playgroud)
使用以下命令创建我们的查询列表:
SELECT GROUP_CONCAT(CONCAT("ALTER TABLE ", table_name, " AUTO_INCREMENT = 0") SEPARATOR ";") FROM information_schema.tables WHERE table_schema = "[DATABASENAME]";
Run Code Online (Sandbox Code Playgroud)
然后你将收到一串长串的mysql查询,然后是一串破折号.将查询字符串复制到剪贴板,它看起来类似于:
ALTER table1 AUTO_INCREMENT = 0;ALTER table2 AUTO_INCREMENT = 0;...continued...
Run Code Online (Sandbox Code Playgroud)
切换到要运行命令的数据库:
USE [DATABASENAME];
Run Code Online (Sandbox Code Playgroud)
然后粘贴剪贴板上的字符串并按Enter键运行它.这应该在数据库中的每个表上运行alter.
弄乱?从备份恢复,请确保在运行以下命令之前注销mysql(只需键入exit;即可)
gzip -d < [backupfile.sql.gz] | mysql -u [uname] -p [dbname]
Run Code Online (Sandbox Code Playgroud)
对于因使用上述任何命令而导致的任何损坏,我将不承担任何责任,使用风险由您自行承担.
| 归档时间: |
|
| 查看次数: |
43003 次 |
| 最近记录: |