MySQL语法错误“在desc附近使用正确的语法

问题描述:

我正在使用Python并使用MySQLdb模块。我有一个有效的连接(我可以成功运行其他查询)MySQL语法错误“在desc附近使用正确的语法

c.execute("ALTER TABLE results ADD COLUMN desc TEXT") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/pymodules/python2.7/MySQLdb/cursors.py", line 166, in execute 
    self.errorhandler(self, exc, value) 
    File "/usr/lib/pymodules/python2.7/MySQLdb/connections.py", line 35, 
    in defaulterrorhandler 
    raise errorclass, errorvalue 

,我发现了以下错误:

_mysql_exceptions.ProgrammingError: (1064, "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 TEXT' at line 1") 

我以前也有类似的麻烦; MySQLdb的语法错误信息是,非常具有说明性,

这怎么解决?

+1

第1步。比较你的语法:http://dev.mysql.com/doc/refman/5.1/en/alter-table.html。错误消息不应该是描述性的。 –

+0

我认为*错误消息来自SQL引擎本身,而不是MySQLdb。 – mtrw

我相信desc被保留。它用在ORDER BY子句中

如果您在其周围放置回滴标签,您也许可以使用它,但我认为将名称更改为非保留字会更好。

+0

就是这样。 'desc'是降序的mysql关键字。 – Jarek

+0

http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html –

+0

第二次我读它,desc hmmmm。 –

desc是MySQL中的保留关键字 - 这里记录:http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

如果你坚持要用desc你应该使用反勾号字符(')转义 - 如下所述:How do I escape reserved words used as column names? MySQL/Create Table

我我们建议您将desc列名更改为例如description,因为我认为最好不要在数据库模式中包含保留关键字。