繁体   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