Mysql8.0.20报错DROP TABLE IF EXISTS ‘user‘解决方案

    技术2023-05-06  187

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker': Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #1 of class path resource [db/schema.sql]: DROP TABLE IF EXISTS 'user'; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''user'' at line 1

    这个错误的原因是使用了如下语法

    DROP TABLE IF EXISTS 'user';

    check the manual that corresponds to your MySQL server version for the right syntax to use near '‘user’( ‘id’ int(11) NOT NULL AUTO_INCREMENT, ‘name’ varchar(255) DEFAULT NULL, ’ at line 1

    错误代码

    DROP TABLE IF EXISTS 'user'; --IF object_id('user','U') is not NULL drop table 'user'; CREATE TABLE 'user'( 'id' int(11) NOT NULL AUTO_INCREMENT, 'name' varchar(255) DEFAULT NULL, 'age' int(11) DEFAULT NULL, PRIMARY KEY ('id') )ENGINE=InnoDB DEFAULT CHARSET=utf8;

    mysql版本8.0.20

    解决方案:去掉引号,包括去掉表名的引号,属性的引号

    DROP TABLE IF EXISTS user; --IF object_id('user','U') is not NULL drop table 'user'; CREATE TABLE user( id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) DEFAULT NULL, age int(11) DEFAULT NULL, PRIMARY KEY (id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;

    这个bug太隐蔽了,费时费力。

    Processed: 0.010, SQL: 9