将记录从一个数据库复制到另一个数据库时,自动增量无法正常工作


Auto increment does not work properly when copying record from one database to another

下面的php代码将一条记录从一个(mysql)数据库写入另一个数据库。在执行此复制操作之前,目标数据库的AGREEMENTS表(常量名称为CORP_DBNAME)为空。两个表AGREEMENTS的"id"字段的类型都是AUTO_INCREMENT。

复制操作有效,但不是100%正确:目标数据库表的id字段应为1(这就是我复制除id之外的所有字段的原因),但为11-原始数据库(SUPPL_DBNAME)中id(10)的自动增量。例如,复制操作应始终将具有正确递增id的记录添加到目标数据库中。为什么会发生这种情况,以及如何解决?

简化的php代码:

$id = 10;
$corpdb = new CORPDatabase(CORP_DBNAME);
$suppldb = new CORPDatabase(SUPPL_DBNAME);
$sql = "INSERT INTO ".CORP_DBNAME.".AGREEMENTS ( otherpartyid, agreementdocumentpath, approvalcorporation, approvalsupplier, created ) "
    . "SELECT otherpartyid, agreementdocumentpath, approvalcorporation, approvalsupplier, created FROM ".SUPPL_DBNAME.".AGREEMENTS "
    . "WHERE ".SUPPL_DBNAME.".AGREEMENTS.id=".$id." ";
$corpdb->UpdateDBRecord($sql);

尝试:

ALTER TABLE AGREEMENTS AUTO_INCREMENT = 1

如果有问题的表完全为空,您可以使用:

TRUNCATE TABLE AGREEMENTS;

在要将数据导入的数据库上,AUTO_INCREMENT应返回1。很可能是因为删除了行而不是截断了表。