H2數(shù)據(jù)庫(kù)設(shè)置本地文件庫(kù)(Server Mode)時(shí)SpringBoot無(wú)法啟動(dòng)解決方案

H2數(shù)據(jù)庫(kù)配置為類(lèi)似jdbc:h2:tcp://localhost/~/test/database的形式雁歌,就是Server Mode绎签,如果沒(méi)有單獨(dú)啟動(dòng)H2服務(wù)器壮韭,那么會(huì)導(dǎo)致如下錯(cuò)誤:

org.h2.jdbc.JdbcSQLException: Connection is broken: "java.net.ConnectException: Connection refused: connect: localhost" [90067-196]

Caused by: java.net.ConnectException: Connection refused: connect

org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.h2.jdbc.JdbcSQLException: Connection is broken: "java.net.ConnectException: Connection refused: connect: localhost" [90067-196]

Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.h2.jdbc.JdbcSQLException: Connection is broken: "java.net.ConnectException: Connection refused: connect: localhost" [90067-196]

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

大概就是連接失敗一類(lèi)的問(wèn)題产徊,網(wǎng)上說(shuō)是因?yàn)閟pringboot比h2服務(wù)器啟動(dòng)更早胞四,然后導(dǎo)致這個(gè)錯(cuò)誤的,具體原因還有待查證闸翅,解決方案是:

  1. 創(chuàng)建類(lèi)Starters(類(lèi)名無(wú)所謂再芋,后面引用就可以)
import org.h2.tools.Server;

public class Starters {

    private static final Logger logger = LoggerFactory.getLogger(Starters.class);

    public static void startH2Server() {
        try {
            Server h2Server = Server.createTcpServer().start(); // 關(guān)鍵代碼
            if (h2Server.isRunning(true)) {
                logger.info("H2 server was started and is running.");
            } else {
                throw new RuntimeException("Could not start H2 server.");
            }
        } catch (SQLException e) {
            throw new RuntimeException("Failed to start H2 server: ", e);
        }
    }
}

注意:Springboot默認(rèn)設(shè)置h2的依賴范圍是runtime,需要?jiǎng)h除那句代碼才能編譯時(shí)調(diào)用org.h2.tools.Server坚冀。

  1. 分別在SpringBoot啟動(dòng)類(lèi)ServletInitializerApplication中調(diào)用H2 server的啟動(dòng)代碼
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        Starters.startH2Server(); // 關(guān)鍵代碼
        return application.sources(Application.class);
    }
}
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        Starters.startH2Server(); // 關(guān)鍵代碼
        SpringApplication.run(Application.class, args);
    }
}

這樣修改之后,就可以正常啟動(dòng)了记某!

參考:How to start H2 TCP server on Spring Boot application startup?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末司训,一起剝皮案震驚了整個(gè)濱河市滑凉,隨后出現(xiàn)的幾起案子蓖谢,更是在濱河造成了極大的恐慌,老刑警劉巖譬涡,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闪幽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡涡匀,警方通過(guò)查閱死者的電腦和手機(jī)盯腌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)陨瘩,“玉大人腕够,你說(shuō)我怎么就攤上這事∩嗬停” “怎么了帚湘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)甚淡。 經(jīng)常有香客問(wèn)我大诸,道長(zhǎng),這世上最難降的妖魔是什么贯卦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任资柔,我火速辦了婚禮,結(jié)果婚禮上撵割,老公的妹妹穿的比我還像新娘贿堰。我一直安慰自己,他們只是感情好啡彬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布羹与。 她就那樣靜靜地躺著故硅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纵搁。 梳的紋絲不亂的頭發(fā)上契吉,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音诡渴,去河邊找鬼。 笑死菲语,一個(gè)胖子當(dāng)著我的面吹牛妄辩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播山上,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼眼耀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了佩憾?” 一聲冷哼從身側(cè)響起哮伟,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妄帘,沒(méi)想到半個(gè)月后楞黄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抡驼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年鬼廓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片致盟。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碎税,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出馏锡,到底是詐尸還是另有隱情雷蹂,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布杯道,位于F島的核電站匪煌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏党巾。R本人自食惡果不足惜虐杯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昧港。 院中可真熱鬧擎椰,春花似錦、人聲如沸创肥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至巩搏,卻和暖如春昨登,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贯底。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工丰辣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人禽捆。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓笙什,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親胚想。 傳聞我的和親對(duì)象是個(gè)殘疾皇子琐凭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容