我有以下SQL语句,它完全正常工作,直到我将其移动到另一台服务器。中间查询(封装在**中)似乎不起作用。我收到一个错误,说'AUTO'是一个不正确的整数类型。如果我完全删除它,它说我的字段数不正确。我正在尝试将数据从一个表复制到另一个表,并允许目标表自动递增其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;";
答案 0 :(得分:2)
基于mysql文档的this页面,你必须这样做:
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';
不同之处在于“接收”表的列名明确列在接收表的名称之后。
文档说
AUTO_INCREMENT列照常工作。