我正在开发一个大型数据库架构
,我希望将其提供给客户。
我是 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/