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太隐蔽了,费时费力。