我正在使用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的语法错误消息非常非描述性。
如何解决这个问题?
答案 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模式中包含保留关键字。