UnsatisfiedDependencyException:使用名称创建 bean 时出错

问题描述 投票:0回答:1

我正在尝试使用我的sql作为数据库来开发一个spring boot应用程序。我用过jdbc。当尝试在 create_table.sql 文件中添加多个 sql 语句时,它给出一个错误,导致循环 bean 错误。但如果我只添加一条sql语句,它不会给出任何错误。即使我只添加了一个语句,如果数据库中没有与其匹配的表,它也会给我这个 bean 错误。

这里我在dao文件中提供了启动错误的方法。

@PostConstruct 公共无效createTables(){ 尝试(InputStream脚本=新的ClassPathResource(“create_table.sql”)。getInputStream()){ jdbcTemplate.execute(new String(script.readAllBytes())); } catch (IOException e) { throw new RuntimeException("无法执行create_table.sql脚本", e); } }

这里是sql对应的错误部分

引起:org.springframework.jdbc.BadSqlGrammarException:StatementCallback;错误的 SQL 语法 [CREATE TABLE IF NOT EXISTS counter_data ( id bigint NOT NULL AUTO_INCRMENT, 时间戳 varchar(150) NOT NULL, counter_1 整数, counter_2 整数, counter_3 int, counter_4 int, counter_5 整数, counter_6 整数, counter_7 整数, counter_8 int, 主键(id) );

-- 如果不存在则创建表 Molding_data ( -- id bigint NOT NULL AUTO_INCRMENT, -- 时间戳 varchar(150) NOT NULL, -- counter_1 int, -- counter_2 int, -- counter_3 int, -- counter_4 int, -- counter_5 int, -- counter_6 int, -- counter_7 int, -- counter_8 int, -- 主键(id) -- );

如果生产数据不存在则创建表( id bigint NOT NULL AUTO_INCRMENT, 时间戳 varchar(150) NOT NULL, 总产量 int, 主键(id) ); -- 如果不存在则创建表 shift_data ( -- id bigint NOT NULL AUTO_INCRMENT, -- 时间戳 varchar(150) NOT NULL, --shift_product int, -- 主键(id) -- );] 在 org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:103) ~[spring-jdbc-6.1.2.jar:6.1.2] 在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:107) ~[spring-jdbc-6.1.2.jar:6.1.2] 在 org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1548) ~[spring-jdbc-6.1.2.jar:6.1.2] 在 org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:408) ~[spring-jdbc-6.1.2.jar:6.1.2] 在 org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:444) ~[spring-jdbc-6.1.2.jar:6.1.2] 在 io.xdoto.dao.impl.DataDaoImpl.createTables(DataDaoImpl.java:34) ~[类/:na] 在 java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] 在 java.base/java.lang.reflect.Method.invoke(Method.java:578) ~[na:na] 在 org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMethod.invoke(InitDestroyAnnotationBeanPostProcessor.java:457) ~[spring-beans-6.1.2.jar:6.1.2] 在 org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:401) ~[spring-beans-6.1.2.jar:6.1.2] 在 org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:219) ~[spring-beans-6.1.2.jar:6.1.2] ...省略46个常见帧 引起原因:java.sql.SQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'CREATE TABLE IF NOT EXISTS production_data ( id bigint NOT NULL AUTO_INCRE' 在第 29 行 在 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121) ~[mysql-connector-j-8.1.0.jar:8.1.0] 在 com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.1.0.jar:8.1.0] 在 com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:763) ~[mysql-connector-j-8.1.0.jar:8.1.0] 在 com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:648) ~[mysql-connector-j-8.1.0.jar:8.1.0] 在 com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[HikariCP-5.0.1.jar:na] 在 com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-5.0.1.jar:na] 在 org.springframework.jdbc.core.JdbcTemplate$1ExecuteStatementCallback.doInStatement(JdbcTemplate.java:435) ~[spring-jdbc-6.1.2.jar:6.1.2] 在 org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:393) ~[spring-jdbc-6.1.2.jar:6.1.2] ...省略53个常用框架

我正在尝试创建应用程序中所需的 sql 表(如果它们不存在)。

mysql spring-boot spring-jdbc hikaricp spring-bean
1个回答
0
投票

timeStamp是一个关键字,所以改用其他的。

© www.soinside.com 2019 - 2024. All rights reserved.