MySQL查询TRUNCATE ERROR

时间:2014-11-21 11:57:42

标签: mysql mysql-error-1064

我有这样的查询,不知道为什么它给了我错误。我想创建表,如果它尚未创建,如果它已创建,然后截断它,然后插入该表中的以下

CREATE TABLE IF NOT EXISTS
`(temp)_v5_userInfo_Netsprint_Data_import`
(
    onlineId VARCHAR(255),
    paramId INT,
    paramValue INT
)
TRUNCATE TABLE
`(temp)_v5_userInfo_Netsprint_Data_import`
INSERT INTO
`(temp)_v5_userInfo_Netsprint_Data_import`
SELECT
`ui`.`onlineId`, `uin`.`paramId`, `uin`.`paramValue`
FROM
`(temp)v5_userInfo_COLD` `ui`
JOIN
`v5_(readOnly)userInfo_number` `uin`
ON
`uin`.`userId` = `ui`.`id`
;

2 个答案:

答案 0 :(得分:0)

前两个语句缺少分隔符";" 添加它们就可以了。

答案 1 :(得分:0)

这有两个因素。首先,正如@krishKM所说,你丢失了分号。陈述应该是:

CREATE TABLE IF NOT EXISTS `(temp)_v5_userInfo_Netsprint_Data_import`
(
    onlineId VARCHAR(255),
    paramId INT,
    paramValue INT
);
TRUNCATE TABLE  `(temp)_v5_userInfo_Netsprint_Data_import`;
INSERT INTO `(temp)_v5_userInfo_Netsprint_Data_import`
SELECT `ui`.`onlineId`, 
       `uin`.`paramId`, 
       `uin`.`paramValue`
FROM  `(temp)v5_userInfo_COLD` `ui`
JOIN `v5_(readOnly)userInfo_number` `uin` ON `uin`.`userId` = `ui`.`id`;

第二,验证将执行此语句的用户的权限。 TRUNCATE requires DROP privilege since MySQL 5.1.6

我的猜测是您的用户具有DATA + CREATE权限,但这些权限还不够。

如果添加drop权限是一个showstopper,一种可能的解决方法是执行

 DELETE FROM `(temp)_v5_userInfo_Netsprint_Data_import`;

当然,这比较慢。