表没有在MySQL中创建

时间:2016-04-13 14:28:23

标签: mysql

我正在尝试但未能使用Eclipse创建表。 我该怎么做才能解决这个问题?

PreparedStatement create=conn.prepareStatement("CREATE TABLE IF NOT EXISTS 
stud(id int unsigned not null auto_increment, 
    firstname varchar(25), 
    lastname varchar(25)");

错误:

  

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在#IF; [IF NOT EXISTS] stud附近使用正确的语法(id int unsigned not null auto_increment,firstname varchar(' at line 1

3 个答案:

答案 0 :(得分:3)

问题是您对表创建的查询在末尾缺少一个括号,这使查询在语法上无效。查询应为:

PreparedStatement create=conn.prepareStatement("CREATE TABLE IF NOT EXISTS 
stud(id int unsigned not null auto_increment, 
    firstname varchar(25), 
    lastname varchar(25))");

在我看来,代码格式化,所以括号/大括号和其他一般语法可以排队有助于避免这些情况,因为你可以看到打开和关闭排队:

PreparedStatement create=conn.prepareStatement("CREATE TABLE IF NOT EXISTS 
stud(
        id int unsigned not null auto_increment, 
        firstname varchar(25), 
        lastname varchar(25)
    )");

但是,某些编码指南可能不允许您这样做。

答案 1 :(得分:2)

尽管每个人都在挑选缺失的括号,但是错误消息与缺少的括号无关,并且答案和注释都会忽略错误消息中的内容。

我相信OP没有复制正在执行的确切代码,因为错误信息显示:

  

...查看与您的MySQL服务器版本对应的手册,以便在“ [IF NOT EXISTS]

附近使用正确的语法

请注意,在错误消息中,if not exists子句用方括号括起来,如create table上的mysql手册所示。在手册中,它表明该子句是可选的,但在现实生活中的代码中,方括号不能存在。

在实际代码中没有方括号,这就是为什么我相信OP没有将原始代码复制到问题中。我的回答是:删除if not exists子句周围的方括号。

答案 2 :(得分:1)

据我所知,它只是缺少一个关闭的副词。

PreparedStatement create=conn.prepareStatement("CREATE TABLE IF NOT EXISTS 
stud(id int unsigned not null auto_increment, 
firstname varchar(25), 
lastname varchar(25))");