3.3.1.1. 连接到非默认数据库schema
PostgreSQL 和 Microsoft SQL Server 支持连接到指定的数据库架构。默认情况下,PostgreSQL 会连接到 public,SQL Server 会连接到 dbo。
- PostgreSQL
 -  
    
如果使用的 Studio,在 Data Store Properties 窗口的 Connection params 字段添加
currentSchema连接参数。Studio 会根据数据源的配置方法自动更新项目文件。否则,需要按照下面的介绍手动配置连接参数。如果在应用程序中配置数据源,添加 URL 属性全路径,示例:
cuba.dataSource.jdbcUrl = jdbc:postgresql://localhost/demo?currentSchema=my_schema如果是从 JNDI 获取数据源,需要在数据源定义的连接 URL 添加参数
currentSchema(Tomcat 中是在context.xml文件),还需要为 createDb 和 updateDb Gradle 任务添加connectionParams属性。示例:task createDb(dependsOn: assembleDbScripts, type: CubaDbCreation) { dbms = 'postgres' host = 'localhost' dbName = 'demo' connectionParams = '?currentSchema=my_schema' dbUser = 'postgres' dbPassword = 'postgres' }现在可以更新或者重新创建数据库,所有的表格会在指定的 schema 中创建。
 - Microsoft SQL Server
 -  
    
此时,只提供一个连接属性就不够了,需要将 schema 和用户做关联。下面是创建一个新数据库并使用非默认 schema 的例子。
-  
创建一个 login:
create login JohnDoe with password='saPass1' -  
创建一个新数据库:
create database my_db -  
用
sa连接至新数据库,创建一个 schema,然后创建用户并赋予权限:create schema my_schema create user JohnDoe for login JohnDoe with default_schema = my_schema exec sp_addrolemember 'db_owner', 'JohnDoe' 
如果是使用 Studio,在 Data Store Properties 窗口的 Connection params 字段添加
currentSchema连接参数。Studio 会根据数据源的配置方法自动更新项目文件。否则,需要按照下面的介绍手动配置连接参数。如果在应用程序中配置数据源,添加 URL 属性全路径,示例:
cuba.dataSource.jdbcUrl = jdbc:sqlserver://localhost;databaseName=demo;currentSchema=my_schema如果是从 JNDI 获取数据源,需要在数据源定义的连接 URL 添加参数
currentSchema(Tomcat 中是在context.xml文件),还需要为 createDb 和 updateDb Gradle 任务添加connectionParams属性。task updateDb(dependsOn: assembleDbScripts, type: CubaDbUpdate) { dbms = 'mssql' dbmsVersion = '2012' host = 'localhost' dbName = 'demo' connectionParams = ';currentSchema=my_schema' dbUser = 'JohnDoe' dbPassword = 'saPass1' }请注意,由于 SQL Server 的特性 - 非默认 schema 需要与用户关联,所以无法从 Studio 或在命令行中执行
createDb来重新创建 SQL Server 数据库。但是,如果在 Studio 中运行 Update database 或在命令行中运行updateDb,则现有数据库中指定 schema 下所有必须的表都会被创建。 -