【发布时间】:2017-08-01 05:03:30
【问题描述】:
我使用 Spring Initializer、嵌入式 Tomcat、Thymeleaf 模板引擎生成了一个 Spring Boot Web 应用程序,并将其打包为可执行 JAR 文件。
使用的技术:
Spring Boot 1.4.2.RELEASE、Spring 4.3.4.RELEASE、Thymeleaf 2.1.5.RELEASE、Tomcat 嵌入 8.5.6、Maven 3、Java 8
这是我在启动 DB 时调用的 bean
@SpringBootApplication
@EnableAutoConfiguration
@Import({SecurityConfig.class})
public class BookApplication {
public static void main(String[] args) {
SpringApplication.run(BookApplication.class, args);
}
}
@Configuration
public class PersistenceConfig {
...
/**
* Creates an in-memory "books" database populated
* with test data for fast testing
*/
@Bean
public DataSource dataSource(){
return
(new EmbeddedDatabaseBuilder())
.addScript("classpath:db/H2.schema.sql")
.addScript("classpath:db/H2.data.sql")
.build();
}
当我在
中执行此插入时CREATE TABLE IF NOT EXISTS t_time_lapse (
id bigint PRIMARY KEY,
name varchar(50) NOT NULL,
description varchar(200) NOT NULL,
sunday boolean DEFAULT NULL,
monday boolean DEFAULT NULL,
tuesday boolean DEFAULT NULL,
wednesday boolean DEFAULT NULL,
thursday boolean DEFAULT NULL,
friday boolean DEFAULT NULL,
saturday boolean DEFAULT NULL,
init_period date NOT NULL ,
end_period date NOT NULL ,
init_time time DEFAULT NULL,
end_time time DEFAULT NULL,
company_id bigint DEFAULT NULL,
FOREIGN KEY (company_id) REFERENCES public.t_company(id)
);
insert into T_TIME_LAPSE (ID, NAME, DESCRIPTION, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY, INIT_PERIOD, END_PERIOD, INIT_TIME, END_TIME, COMPANY_ID)
values (9090,'key', 'key', 1,1,1,1,1,1,1,CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, PARSEDATETIME('03:05:06 GMT','HH:mm:ss z', 'en', 'GMT'), PARSEDATETIME('03:05:06 GMT','HH:mm:ss z', 'en', 'GMT'), 1);
我收到了这个错误
user lacks privilege or object not found: PARSEDATETIME
在数据源资源管理器中执行相同的查询 -> 数据库连接 -> SQL Scrapbook 一切都很好!
在脚本中添加SHOW CREATE FUNCTION PARSEDATETIME:
Failed to execute SQL script statement #1 of class path resource [db/H2.data.sql]: SHOW CREATE FUNCTION PARSEDATETIME; nested exception is java.sql.SQLSyntaxErrorException: unexpected token: SHOW
和CREATE FUNCTION PARSEDATETIME;
Failed to execute SQL script statement #1 of class path resource [db/H2.data.sql]: CREATE FUNCTION PARSEDATETIME; nested exception is java.sql.SQLSyntaxErrorException: unexpected end of statement: required: (
以及建议的示例:
Failed to execute SQL script statement #2 of class path resource [db/H2.data.sql]: INSERT INTO test values (1, CALL PARSEDATETIME('03:05:06 GMT','HH:mm:ss z', 'en', 'GMT')); nested exception is java.sql.SQLSyntaxErrorException: unexpected token: CALL
【问题讨论】:
-
除此之外:您不使用 autoconfig 是否有特殊原因?
-
你的意思是 EnableAutoConfiguration 吗?
-
您的
T_TIME_LAPSE架构是什么?请添加 DDL。 -
我测试过,它适用于 TIMESTAMP 列。
CREATE TABLE test ( id INT NOT NULL, birthday TIMESTAMP ); INSERT INTO test values (1, CALL PARSEDATETIME('03:05:06 GMT','HH:mm:ss z', 'en', 'GMT'));在 data.sql 上
标签: mysql spring spring-mvc spring-boot h2