下面的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。很可能是因为删除了行而不是截断了表。