2016-05-12 76 views
1

我遵循本指南從春天https://spring.io/guides/gs/batch-processing/如何使春天使用mysql而不是hsql

一切正常,只要我使用hsql,但我想切換到MySQL。問題在於spring總是試圖啓動並使用hsql實例。

以下是代碼:

application.properties在hello.ressources:在hello.ressources

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 
    <bean id="dataSource" name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://xxx:3306/xxx" /> 
     <property name="username" value="user" /> 
     <property name="password" value="pass" /> 
    </bean> 
</beans> 

在我BatchConfiguration類

spring.datasource.url=jdbc:mysql://xxx:3306/xxx 
spring.datasource.username=user 
spring.datasource.password=pass 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 

datasource.xml,有一個@Autowired屬性

@Autowired 
    public DataSource dataSource; 

Intelij將其顯示爲連接到datasource.xml

然而,當我運行應用程序它第一次登錄

o.s.j.d.e.EmbeddedDatabaseFactory  : Starting embedded database: url='jdbc:hsqldb:mem:testdb', username='sa' 

不應該出現,然後拋出一個錯誤說:

PreparedStatementCallback;錯誤的SQL語法[INSERT INTO people(first_name,last_name)VALUES(?,?)];嵌套的例外是java.sql.SQLSyntaxErrorException:用戶缺少特權或找不到對象:以人

我已經改變了架構all.sql到架構mysql.sql,改變了代碼

DROP TABLE IF EXISTS people; 
CREATE TABLE people (
    person_id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT , 
    first_name VARCHAR(20), 
    last_name VARCHAR(20) 
); 

在我的build.gradle我已經加入

classpath 'mysql:mysql-connector-java:5.1.6' 

到構建的依賴性,並從編譯DEPS改變了HSQL部分

compile("mysql:mysql-connector-java:5.1.6") 

如何在這裏使用mysql並禁用hsql?

編輯:

項目結構:http://imgur.com/HEuiw9W

我已刪除datasource.xml。

這是的build.gradle:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE") 
     classpath 'mysql:mysql-connector-java:5.1.6' 
    } 
} 

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'idea' 
apply plugin: 'spring-boot' 

jar { 
    baseName = 'gs-batch-processing' 
    version = '0.1.0' 
} 

repositories { 
    mavenCentral() 
} 

sourceCompatibility = 1.8 
targetCompatibility = 1.8 

dependencies { 
    compile("org.springframework.boot:spring-boot-starter-batch") 
    compile("mysql:mysql-connector-java:5.1.6") 
    testCompile("junit:junit") 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '2.3' 
} 
+0

@Jarrodroberson你投票結束的這個問題是關於一個缺課的問題,我的問題不是。 –

+0

Imo,這個問題不是鏈接的問題的重複。當然,他們都將從HSQL切換到MySQL,但這是一個Spring Boot項目,默認情況下,Boot將嵌入式HSQL配置爲其數據庫。這個問題可能有重複,但鏈接的問題絕對不是一個 –

+0

你有一個想法如何解決這個@AliDehghani –

回答

0

你拿了應足以使彈簧引導用mysql的步驟。

我看到你正在使用spring-batch,它也帶有一個hsql依賴項。如果可能有第二個數據源已初始化,您是否檢查過日誌?可能是您看到的hsql初始化嘗試爲其元數據設置數據源。

你試圖添加

spring.datasource.platform=mysql 

到application.properties?