java - SQL异常:can not create table

标签 java mysql jdbc sqlexception

当我运行代码时出现此错误

Exception in thread "main" java.sql.SQLException: Can't create table 'Sensors_db.one' (errno: 121)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
    at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1362)
    at sensordev.SensorDev.sensorPage(SensorDev.java:283)
    at sensordev.SensorDev.main(SensorDev.java:893)

以下是我的代码

String type = "37";
        String senName = "one";
        String query;
        switch(type){
            case "37":{

                query = "CREATE TABLE IF NOT EXISTS `"+ senName +"` ("
                        + "  `Name` VARCHAR(45) NOT NULL,"
                        + "  `State` VARCHAR(45) NOT NULL,"
                        + "  `Time` TIME NOT NULL,"
                        + "  PRIMARY KEY (`Time`, `State`),"
                        + "  INDEX `fk_dummy_1_idx` (`Name` ASC),"
                        + "  CONSTRAINT `fk_dummy_1`"
                        + "    FOREIGN KEY (`Name`)"
                        + "    REFERENCES `Sensors_db`.`sensorInfo` (`SName`)"
                        + "    ON DELETE NO ACTION"
                        + "    ON UPDATE NO ACTION);";
                defaultStmt = conn.prepareStatement(query);
                 defaultStmt.execute();

“conn”是我的数据库实例,“defaultStmt”是一个PreparedStatement

最佳答案

err 121 表示约束名称已被使用。更改您的约束名称。约束名称在数据库中应该是唯一的。

查看约束是否已存在。

SELECT
    table_name
FROM
    information_schema.table_constraints
WHERE
    constraint_type = 'FOREIGN KEY'
    AND table_schema = DATABASE() AND
    constraint_name = 'fk_dummy_1'

关于java - SQL异常:can not create table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32839886/

相关文章:

java - 从 weblogic 切换到 tomcat/maven 后,.tld 不工作

java - 调整 Pane 中 SwingNode 的大小

mysql - 如何正确声明变量 phpmyadmin mysql 触发器?

mysql - 重写一个嵌套的mysql查询以创建 View

java - JDBC COUNT()某一行如何得到结果

java - 如何知道 JFileChooser 是否为 null 以及如果为 null 则不更新数据库

java - 中文文件名的 InvalidPathException

mysql - 使用 TIMESTAMP 月份进行分区

java - 将 JDBC 数据源配置设置为 XML

java - 为什么 JDBC 驱动程序将准备好的语句保持在连接级别?