我有一个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());
}
}
答案 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]>