gpt4 book ai didi

mysql - 从备份创建新的 MySql 模式。SQL 源文件重置自动递增 id 列?

转载 作者:行者123 更新时间:2023-11-29 04:01:51 25 4
gpt4 key购买 nike

我正在开发一个大型数据库架构,我希望将其提供给客户。

我是 MySql 数据库管理的新手。如何恢复架构的 .sql 文件,以便它也将所有自动增量 id 列重置回 0 或再次 Null

我实际上恢复了一个新的模式名称并插入了一条测试记录,发现自动 ID 列从它们在最后一个模式名称中停止的地方递增。

如何在 MySql 数据库建模中解决这个问题?

我希望始终能够为付费客户“分拆”我当前版本数据模型的精确副本。

谢谢。

最佳答案

您可以只转储架构,不转储数据:

$ mysqldump -d databasename > databasename-schema.sql

如果您使用 InnoDB 表(您应该使用),每次重新启动 MySQL 实例时,自动增量值总是会重置。它在每个表中重置为的值等于当前存储在表中的最大值加 1。因此,如果您的表为空,则该值将为 1。

如果您不想在恢复后重启 MySQL 实例,您可以在恢复前去除 CREATE TABLE 语句中的自动递增子句:

$ mysqldump -d databasename | sed -e 's/AUTO_INCREMENT=[0-9][0-9]*//' 
> databasename-schema.sql

否则您可以在恢复后通过 ALTER TABLE 重置自动增量值。这必须在每个表的基础上完成,但您可以从 INFORMATION_SCHEMA 查询具有自动递增键的表列表:

$ mysql -N -B -e "SELECT CONCAT('ALTER TABLE \`', table_schema, '\`.\`', 
table_name, '\` AUTO_INCREMENT=1;') AS ddl FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'test' AND AUTO_INCREMENT IS NOT NULL" | mysql -v

关于mysql - 从备份创建新的 MySql 模式。SQL 源文件重置自动递增 id 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14021475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com