Php 将记录从一个数据库复制到另一个数据库时,“自动增量”无法正常工作
下面的php代码将记录从一个mysql数据库写入另一个数据库。在此复制操作之前,具有常量名称CORP_DBNAME的目标数据库的AGREEMENTS表为空。两个表协议的“id”字段均为AUTO_INCREMENT类型 复制操作起作用,但不是100%正确:目标数据库表的id字段应为1。这是我复制除id以外的所有字段的原因,但为11-原始数据库SUPPL_DBNAME中id 10的自动增量。例如,复制操作应始终使用正确的递增id将记录添加到目标数据库中。为什么会发生这种情况以及如何解决 简化的php代码:Php 将记录从一个数据库复制到另一个数据库时,“自动增量”无法正常工作,php,mysql,Php,Mysql,下面的php代码将记录从一个mysql数据库写入另一个数据库。在此复制操作之前,具有常量名称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);
尝试:
如果相关表格完全为空,则可以使用:
TRUNCATE TABLE AGREEMENTS;
在要将数据导入的数据库上,自动增量应返回1。很可能是因为删除了行而不是截断了表。目标表并不总是空的;例如,复制操作应始终使用正确的递增id将记录添加到目标数据库中。查看我的更新文本。当我用自动递增定义表时,为什么需要这个ALTER语句?如果目标表不总是空的,那么不应该使用TRUNCATE。您使用AUTO INCREMENT定义了表,但以前可能也在表中插入了行。删除这些行时,自动增量值与表中这些行时的值相同。
TRUNCATE TABLE AGREEMENTS;