簡體   English   中英

將Spring JDBC創建的模式設置為默認模式

[英]Make schema created by Spring JDBC the default schema

我正在使用Spring Boot和JDBC進行數據庫連接。 我將schema.sql放在類路徑中以初始化模式和表。

因為連接到數據源時還不存在該模式,所以我必須在application.properties中配置數據源,如下所示:

spring.datasource.url=jdbc:mysql://localhost:3306/

schema.sql:

CREATE DATABASE IF NOT EXISTS <schema_name>
USE <schema.name>;

CREATE TABLE...

所以我在創建架構后選擇架構。 這顯然不會持續太久。

如何正確配置? 有沒有一種方法可以在創建腳本之后選擇默認架構,或者更改數據源URL?

使用JDBC,您需要使用Connection.setCatalog在數據庫之間進行切換。 您不應使用USE <databasename>因為JDBC驅動程序本身需要知道它在哪個數據庫上運行。

基於來自schema.sql的代碼

USE <schema.name>;

這不適用於您的Java環境。 schema.sql將被執行並完成,不會滿足您設置默認架構的要求。 通用方法是將JDBC URL用作:

jdbc:mysql://localhost:3306/DB_NAME

這會將默認數據庫設置為DB_NAME。 假設:我假設您要連接到單節點DB,而無需使用任何負載平衡器或故障轉移機制。 URL可能會根據要配置的這些功能而更改。

如果未在URL中指定DB_NAME,則表示它們不是默認架構。 在這種情況下,您有2個選項可以訪問數據庫。

1)始終使用Connection.setCatalog()方法在JDBC應用程序中指定所需的數據庫,而不是USE數據庫語句。

2)在SQL中使用數據庫名稱(即SELECT dbname.tablename.colname FROM dbname.tablename ...)完全指定表名稱。 通常,僅在構建可與多個數據庫一起使用的工具(例如GUI數據庫管理器)時,在不指定要使用的數據庫的情況下打開連接才有用。

有關更多詳細信息,請參考下面的mysql門戶以供參考。

https://dev.mysql.com/doc/connector-j/zh-CN/connector-j-reference-configuration-properties.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM