MySQL语法错误Java表创建

时间:2018-08-27 02:59:48

标签: java mysql

我有一个Java文件,如果该表确实存在,它会尝试创建一个表,每当我尝试运行该程序时,我总是会在语法上出现错误。

CREATE TABLE IF NOT EXISTS `shirts` ( `id` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR NOT NULL , `iid` INT NOT NULL , `desc` VARCHAR NOT NULL , `shelf` VARCHAR NOT NULL , `gender` VARCHAR NOT NULL , `chestsize` FLOAT(4,2) NOT NULL , `waistsize` FLOAT(4,2) NOT NULL , `seatsize` FLOAT(4,2) NOT NULL , `bicepsize` FLOAT(4,2) NOT NULL , `shirtlength` FLOAT(4,2) NOT NULL , `shirtwidth` FLOAT(4,2) NOT NULL , `sleevelength` FLOAT(4,2) NOT NULL , `collarsize` FLOAT(4,2) NOT NULL , `picture` LONGBLOB NOT NULL , `rented` BOOLEAN NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;

它是直接从phpMyAdmin复制的,但是不断抛出错误说明:

  

您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以在第1行的'NOT NULL,'iid'INT NOT NULL,'desc` VARCHAR NOT NULL,'shelf` VARCHAR NOT NU'附近使用正确的语法

对于我的一生,我不知道为什么。

我的语法哪里有错误?

完整的Java代码:

public void createShirtsTable() {
    String sql = "CREATE TABLE IF NOT EXISTS `shirts` ( `id` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR NOT NULL , `iid` INT NOT NULL , `desc` VARCHAR NOT NULL , `shelf` VARCHAR NOT NULL , `gender` VARCHAR NOT NULL , `chestsize` FLOAT(4,2) NOT NULL , `waistsize` FLOAT(4,2) NOT NULL , `seatsize` FLOAT(4,2) NOT NULL , `bicepsize` FLOAT(4,2) NOT NULL , `shirtlength` FLOAT(4,2) NOT NULL , `shirtwidth` FLOAT(4,2) NOT NULL , `sleevelength` FLOAT(4,2) NOT NULL , `collarsize` FLOAT(4,2) NOT NULL , `picture` LONGBLOB NOT NULL , `rented` BOOLEAN NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;";
    try (Connection conn = this.connect();
            Statement stmt = conn.createStatement()) {
        stmt.execute(sql);
        //System.out.println("Created Shirts Table"); --DEBUG
    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }
}

1 个答案:

答案 0 :(得分:4)

要在MySQL中声明varchar字段,必须将最大长度作为参数传递

CREATE TABLE IF NOT EXISTS `shirts` 
( 
     `id` INT NOT NULL AUTO_INCREMENT ,
     `name` VARCHAR(10) NOT NULL ,           --updated
     `iid` INT NOT NULL ,
     `desc` VARCHAR(10) NOT NULL ,           --updated
     `shelf` VARCHAR(10) NOT NULL ,          --updated
     `gender` VARCHAR(10) NOT NULL ,         --updated
     `chestsize` FLOAT(4,2) NOT NULL ,
     `waistsize` FLOAT(4,2) NOT NULL ,
     `seatsize` FLOAT(4,2) NOT NULL ,
     `bicepsize` FLOAT(4,2) NOT NULL ,
     `shirtlength` FLOAT(4,2) NOT NULL ,
     `shirtwidth` FLOAT(4,2) NOT NULL ,
     `sleevelength` FLOAT(4,2) NOT NULL ,
     `collarsize` FLOAT(4,2) NOT NULL ,
     `picture` LONGBLOB NOT NULL ,
     `rented` BOOLEAN NOT NULL ,
     PRIMARY KEY (`id`)

);

文档here

查看我的输出

    -> );
Query OK, 0 rows affected (0.04 sec)

MariaDB [test]>