2017-04-04 30 views
0

有人可以解釋我,我的SQL查詢出了什麼問題?DROP COLUMN如果在MariaDB中存在 - 語法錯誤

ALTER TABLE tableName DROP COLUMN IF EXISTS columnName; 

MariaDB的給了我這個錯誤:

#1064 - You have an error in your SQL syntax; check the manual that 
corresponds to your MariaDB server version for the right syntax 
to use near 'IF EXISTS columnName' at line 1 

一個嘗試了很多語法修飾,但沒有積極的結果。

+0

'刪除列,如果exists'不是有效的MySQL語法,所以我會感到驚訝,如果它在MariaDB的的支持。 –

+0

在MariaDB文檔(https://mariadb.com/kb/en/mariadb/alter-table/#drop-column-if-exists-col_name-cascaderestrict)中可以找到這條語句。 – janfitz

+0

該語法是在MariaDB ** 10.0 **中引入的。你必須使用5.5。 – elenst

回答

1

我在dbfiddle.uk(MariaDB 10.2 RC)上測試過它,它工作。你確定你的MariaDB版本(SELECT VERSION();)以及該版本中的命令是否存在? (我想它不支持,直到MariaDB的10)

CREATE TABLE T1 (ID INT, DESCR VARCHAR(20)); 
INSERT INTO T1 VALUES (1, 'Test'); 
SELECT * FROM T1; 
ALTER TABLE T1 DROP COLUMN IF EXISTS XXX; /* no error */ 
SELECT * FROM T1; 
ALTER TABLE T1 DROP COLUMN IF EXISTS DESCR; /* column dropped*/ 
SELECT * FROM T1;