Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将记录从一个数据库复制到另一个数据库时,“自动增量”无法正常工作_Php_Mysql - Fatal编程技术网

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

下面的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;