JoJ*_*oJo 1 mysql schema auto-increment
我正在开发一种database schema我希望向客户提供的大型产品.
我是MySql数据库管理的新手.如何还原.sql架构的文件,以便它还将所有自动增量ID列重置为0或Null重新生成.
我实际上恢复了一个新的模式名称并插入了一个测试记录,发现自动id列在最后一个模式名称中从它们离开的位置开始递增.
我如何在MySql数据库建模中解决这个问题?
我希望始终能够为付费客户"分拆"我当前版本数据模型的精确副本.
谢谢.
您可以仅以这种方式转储模式,而不使用数据:
$ mysqldump -d databasename > databasename-schema.sql
Run Code Online (Sandbox Code Playgroud)
如果您使用InnoDB表(您应该使用),则每次重新启动MySQL实例时都会重置自动增量值.它在每个表中重置的值等于当前存储在表中的最大值加1.因此,如果表是空的,则值将为1.
如果您不想在还原后重新启动MySQL实例,则可以在还原之前删除CREATE TABLE语句中的auto-increment子句:
$ mysqldump -d databasename | sed -e 's/AUTO_INCREMENT=[0-9][0-9]*//'
> databasename-schema.sql
Run Code Online (Sandbox Code Playgroud)
否则,您可以在恢复后使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |