【发布时间】:2016-02-05 23:52:58
【问题描述】:
我正在尝试设置一个脚本来在我的数据库中生成一组特定的测试数据,在开始时我想清除相关的表而不放弃约束(因为测试数据不是合适的地方重建约束)并为每个表重置 AUTO_INCREMENT,因为如果我可以对许多 ID 进行硬编码,那么设置测试数据会简单得多。
例如,我有两个这样的语句(几乎每个表都有一对):
DELETE FROM AppointmentAttr
ALTER TABLE AppointmentAttr AUTO_INCREMENT = 1
虽然记录被删除,但自动增量值不会恢复为 1,即使我能找到的所有文档和 SO 答案都表明这应该有效。
如果我在 MySQL Workbench 中执行相同的语句,它也不会恢复它。
这是一个 INNODB 数据库。
我错过了什么?
(注意:由于存在约束,我不能使用 TRUNCATE)。
【问题讨论】:
-
为什么不直接截断表格?这将在本质上使用所有约束等重新创建它?
-
@Namphibian:无法截断具有活动约束的表,正如我在问题中所说,我不想在脚本中删除并重新创建约束以创建测试数据。
-
@JasonMcCreary:有问题的自动增量列上的那些。
-
和外键约束一样?
-
有趣的是 MySQL INNODB 并不是为使用测试数据而设计的。
标签: mysql