使Spring JDBC创建的模式成为默认模式

时间:2015-11-17 16:33:00

标签: java mysql spring jdbc spring-boot

我正在使用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?

2 个答案:

答案 0 :(得分:1)

使用JDBC,您需要使用Connection.setCatalog在数据库之间切换。您不应该使用USE <databasename>,因为JDBC驱动程序本身需要知道它正在运行的数据库。

答案 1 :(得分:1)

基于schema.sql的代码

USE <schema.name>;

这对您的Java环境不起作用。 schema.sql将被执行并完成,这将无法满足您设置默认架构的要求。 一般方法是使用JDBC URL作为;

jdbc:mysql://localhost:3306/DB_NAME

这会将默认数据库设置为DB_NAME。 假设:我假设您要连接到单节点数据库,而不使用任何负载均衡器或故障转移机制。 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/en/connector-j-reference-configuration-properties.html