2014-11-21 53 views
0

我有這樣的查詢,不知道爲什麼它給了我錯誤。我要創建的表,如果尚未創建它,如果創建它,然後截斷,然後插入認爲該表MySQL查詢TRUNCATE ERROR

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` 
; 

回答

0

前兩個語句丟失分隔符以下「;」 添加它們,它會工作。

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`; 

秒,驗證將執行此語句的用戶的權限。 TRUNCATErequires DROP privilege since MySQL 5.1.6

我的猜測是你的用戶具有DATA + CREATE權限,但它們還不夠。

如果添加降特權是一個攪局者,一個可能的解決方法是執行

DELETE FROM `(temp)_v5_userInfo_Netsprint_Data_import`; 

哪個,當然,速度較慢。

+0

問題在於缺少分號。謝謝大家的幫助,我設法解決了這個問題。 – Pandemum 2014-11-21 12:24:32