2013-04-13 53 views
19

我在Play框架項目上通過h2-browser訪問mem數據庫時遇到了一些問題。使用h2瀏覽器訪問play項目數據庫

下面的配置,我認爲是正確的(顯然不是!)我得到一個h2瀏覽器,但沒有表(即模式,即是),即使我已經應用了一些遷移。

我在這裏錯過了什麼?提前致謝。

CONF/application.conf:

db.default.driver=org.h2.Driver 
db.default.url="jdbc:h2:mem:play" 
db.default.user=sa 
db.default.password="" 

conf

回答

22

當使用在-MEM數據庫實際上要訪問兩個不同的數據庫(儘管具有相同的路徑)。有兩種解決方法:

  1. 從控制檯首先啓動裸「玩」控制檯,運行H2瀏覽器終於​​在server mode運行你的應用程序(withinh相同play控制檯)
  2. 運行H2,從這個額外beneffit方法是事實是,當數據庫存儲在文件中時,每次應用程序的重新啓動都不會丟失數據。然後你就可以從多點訪問該數據庫(也由「獨立」 H +瀏覽器或其他一些GUI)與路徑類似於:

UNIX(~意味着你的home目錄)

db.default.url="jdbc:h2:tcp://localhost/~/some/path/to/MyPlayDB"

或Windows

db.default.url="jdbc:h2:tcp://localhost/c:/some/path/to/MyPlayDB"

注意,對於在生產模式下最佳的性能是值得切換回至E mbedded模式,但是對於開發階段,解決方案應該足夠好(仍然比示例MySQL快)

+0

我試過你的解決方案1,表格仍然不顯示。所以這個問題的實際答案是使用解決方案2? – nemoo

+0

@nemoo - 剛剛通過全新Play 2.2.0測試 - 第一種方法按要求工作_still_ – biesior

+2

我也嘗試過解決方案1,並且遇到同樣的問題。我開始播放控制檯,運行h2瀏覽器,登錄到h2瀏覽器網頁屏幕。然後使用相同的控制檯,我運行「運行」。當訪問我的網站時,我得到「無法連接到數據庫[默認]」。我錯過了什麼嗎?連接字符串是「jdbc:h2:mem:play」,我使用Play 2.2.1 – according2me

16

要通過H2 Web Console瀏覽數據庫的內容,請同時啓動Web控制檯和Play應用程序通過遊戲控制檯:

  1. 首先,通過運行類型安全激活進入遊戲控制檯:
    ~/Projects/play-app $ activator
  2. 啓動Web控制檯:
    [play-app] $ h2-browser
    這應該打開您的瀏覽器中的H2控制檯界面。
  3. 運行Play應用程序:
    [play-app] $ run
  4. 在您的瀏覽器中訪問Play應用程序。這將導致Play應用程序連接到內存中的H2數據庫,並使用一些默認數據(如果有)初始化它。
  5. 登錄到您的瀏覽器的H2 Web控制檯來檢查數據庫內容。使用以下設置(,例如作爲Play-App In-Memory Database),你可以保存到再次輕鬆訪問它們:
    • 驅動程序類:org.h2.Driver
    • JDBC網址:jdbc:h2:mem:play
    • 用戶名:sa
    • 密碼:<blank>

注意上面的設置必須符合您的實際configurati (db.default.url等)。

+0

這適用於我!謝謝 ;-) –

相關問題