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

时间:2011-11-28 23:23:34

标签: mysql sql mysql-error-1064

我正在使用Python并使用MySQLdb模块。我有一个有效的连接(我可以成功运行其他查询)

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的语法错误消息非常非描述性。

如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

我相信desc是保留的。它用在ORDER BY子句

如果你在它周围放置一些标记,你可能可以使用它,但我认为你最好将名称改为非保留字。

答案 1 :(得分:0)

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,因为我认为最好不要在db模式中包含保留关键字。