[英]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.