为什么MySQL表自动增量重置为0?

为什么MySQL表自动增量重置为0?,mysql,ruby-on-rails,centos,Mysql,Ruby On Rails,Centos,今天我发现几个表的auto_increment值被重置为0。为什么? Rails 2.3.x MySql 5.0.x 资料: 表通常为空(创建行,然后删除行) 服务器是init6 应用程序取决于自动增量id,因此我想知道如何防止这种情况再次发生。让我猜猜:您正在使用InnoDB InnoDB存储引擎;当MySQL重新启动时,它被重置 解决方案是将表中的最高值存储在某个位置,并在系统启动时将其恢复。或者,根据您的用例,您可能会发现保留一个MyISAM表只是为了提供AUTO_INCREMEN

今天我发现几个表的
auto_increment
值被重置为0。为什么?

  • Rails 2.3.x
  • MySql 5.0.x
资料:

  • 表通常为空(创建行,然后删除行)
  • 服务器是
    init6

应用程序取决于自动增量id,因此我想知道如何防止这种情况再次发生。

让我猜猜:您正在使用InnoDB

InnoDB存储引擎;当MySQL重新启动时,它被重置

解决方案是将表中的最高值存储在某个位置,并在系统启动时将其恢复。或者,根据您的用例,您可能会发现保留一个MyISAM表只是为了提供
AUTO_INCREMENT
值很有用


您可以找到。

是的,它是InnoDB。我可以通过将表从InnoDB转换为MyISAM来解决这个问题吗?@ohho,你可以,但是你会失去InnoDB和MyISAM所没有的所有功能,比如对事务和引用完整性的支持。我不知道你是否用过这些。非常感谢你提供的信息和解释。我会检讨守则,并按守则行事。