Mysql 使用自动递增字段将数据从一个表复制到另一个表时出现问题

Mysql 使用自动递增字段将数据从一个表复制到另一个表时出现问题,mysql,Mysql,我有下面的SQL语句,在我将它移到另一台服务器之前,它一直工作得很好。中间查询(封装在**中)似乎不起作用。我得到一个错误,说'自动'是一个不正确的整数类型。如果我把它全部删除,它会说我的字段数不正确。我试图将数据从一个表复制到另一个表,并允许目标表自动增加其ID号 SET sql_safe_updates=0; START TRANSACTION; DELETE FROM shares WHERE asset_id

我有下面的SQL语句,在我将它移到另一台服务器之前,它一直工作得很好。中间查询(封装在**中)似乎不起作用。我得到一个错误,说'自动'是一个不正确的整数类型。如果我把它全部删除,它会说我的字段数不正确。我试图将数据从一个表复制到另一个表,并允许目标表自动增加其ID号

          SET sql_safe_updates=0;
          START TRANSACTION;
          DELETE FROM shares
          WHERE asset_id = '$asset_ID';

          /*************************************************************/
          INSERT INTO shares
          SELECT 'AUTO', asset_ID, member_ID, percent_owner, is_approved
          FROM pending_share_changes
          WHERE asset_ID = '$asset_ID';
          /*************************************************************/

          DELETE FROM pending_share_changes
          WHERE asset_ID = '$asset_ID';
          DELETE FROM shares
          WHERE asset_ID = '$asset_ID' AND percent_owner = '0';
          COMMIT;";
根据mysql文档的页面,您必须执行以下操作:

INSERT INTO shares 
  (column_name1, column_name2, column_name3, column_name4) -- changed!
SELECT asset_ID, member_ID, percent_owner, is_approved
FROM pending_share_changes
WHERE asset_ID = '$asset_ID';
区别在于“receiving”表的列名显式地列在接收表的名称之后

医生说

自动增量列正常工作


是的,有。基本上,表1包含当前数据。表2得到了新提出的数据。如果批准,此查询将删除表1中的数据,将表2的数据复制到表1,然后删除表2中的数据。这似乎有效!只是不知道为什么它在我的Win7机器上工作,而不是在我的Win2k8上工作。不管是哪种方式,新代码在这两种情况下都运行良好。谢谢