修改表时,一个Add 对应多个列定义的语句 解析错误 sql: ALTER TABLE score1 ADD ( test3 int(11),test4 int(11))
错误信息: Exception in thread "main" com.alibaba.druid.sql.parser.ParserException: error LPAREN at com.alibaba.druid.sql.parser.SQLExprParser.name(SQLExprParser.java:864) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlExprParser.parseColumn(MySqlExprParser.java:521) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseAlter(MySqlStatementParser.java:2330) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:182) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:121) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:116)
原提问者GitHub用户huaxiaoer
如果您在MySQL中执行DDL语句时遇到了解析错误,可能是由以下原因之一导致的:
语法错误:DDL语句中使用了不符合MySQL语法规范的语句或命令,例如缺少关键字、语句拼写错误等。
数据库对象不存在:DDL语句中引用了不存在的数据库对象,例如不存在的表、列或索引等。
权限不足:执行DDL语句的用户没有足够的权限来执行操作,例如没有创建表或索引的权限等。
为了解决DDL语句解析错误,您可以采取以下措施:
检查语法:检查DDL语句是否符合MySQL语法规范。可以参考MySQL官方文档或在线MySQL语法检查工具来检查SQL语句的语法。
检查数据库对象:检查DDL语句中引用的数据库对象是否存在。可以使用SHOW语句来列出数据库中所有的表、列、索引等对象,以确认DDL语句中引用的对象是否存在。
检查权限:检查执行DDL语句的用户是否具有足够的权限来执行操作。可以使用GRANT语句来授予用户所需的权限。
尝试使用其他方法:如果DDL语句无法解析,可以尝试使用其他方法来创建或修改数据库对象。例如,使用图形化工具或ORM框架来创建或修改数据库对象。
这个错误是由于语法错误引起的。在MySQL中,当你使用ALTER TABLE语句添加多个列定义时,应该使用逗号分隔每个列定义,而不是将它们放在括号中。
正确的语法应该是这样的:
ALTER TABLE score1 ADD test3 int(11),test4 int(11);
请注意,我去掉了括号并用逗号分隔了列定义。这样应该就不会再出现解析错误了。
问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14
原回答者GitHub用户wenshao
根据提供的错误信息,看起来使用的SQL语句格式不正确。在MySQL中,添加多个列定义时,应该使用逗号将它们分隔开,而不是将它们放在括号中。请尝试使用以下语句进行修改:
ALTER TABLE score1 ADD test3 int(11), ADD test4 int(11);
这样应该可以成功添加两个新的列到表中。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。