2015-12-09 104 views
-1

我在Debian上使用5.5.46服務器。與MySQL錯誤1064(42000)

我想知道什麼是錯的語法如下,我發現了以下錯誤:

ERROR 1064 (42000) at line 5: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc VARCHAR(10) UNSIGNED NOT NULL, hora VARCHAR(5) UNSIGNED NOT NULL, ' at line 3

drop database loteria; 
create database loteria; 
use loteria; 

create table loteria (
    id SMALLINT(3) UNSIGNED NOT NULL AUTO_INCREMENT, 
    desc VARCHAR(10) UNSIGNED NOT NULL, 
    hora VARCHAR(5) UNSIGNED NOT NULL, 
    primary key(id) 
); 

我無法看到錯誤,可以請你指導我來標識它。

謝謝你的時間。

+1

desc是一個保留字 – Hogan

回答

2

varchar類型不能是「UNSIGNED」。它們是字母數字類型 - UNSIGNED不適用。另外,desc是保留字。

下面的工作將對列名進行反編。請注意,只有desc需要反選,因爲它是保留字。但是,爲了安全起見,所有這些都是通常的做法。列名中的空格或連字符可能會觸發類似的語法錯誤。

create table `loteria` (
    `id` SMALLINT(3) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `desc` VARCHAR(10) NOT NULL, 
    `hora` VARCHAR(5) NOT NULL, 
    primary key(`id`) 
); 

有關保留字在MySQL列表,請參閱This Link和它們與一個(R)其名稱旁邊的人。

+0

這很愚蠢。謝謝。我有5年以上沒有對SQL做任何事情。謝謝。 –

0

兩個問題:desc是不能用作列名的保留字,並且varchar不能是「無符號」,因爲它是字符串類型。