8

我正在使用 Play 构建一个 Web 应用程序!使用 Vertica 数据库作为后端。Vertica 的 JDBC 连接字符串包含服务器和数据库名称,但我的表位于特定架构下(例如“dev_myschema”)。因此,我应该将我的表称为“dev_myschema.mytable”。在生产模式中也有所有这些表的精确副本(比如“prod_myschema”)以及真实数据。

我想在配置文件中设置这个模式名称,以便在这两个模式之间轻松切换。现在,我在帮助程序类中有一个 getConnection 方法,它执行 DB.getConnection() 并将配置的模式设置为该连接对象的默认模式。但是,在其他模型类中,它与实体注释一起被提及(@Entity @Table(name=dev_myschema.mytable))

有没有一种方法可以让我在配置文件中指定模式名称并让连接方法和模型注释读取它?

谢谢。

4

5 回答 5

7

尤金几乎是正确的,但缺少一个下划线。设置默认架构的正确 Vertica SQL 语法是:

set search_path to dev_myschema

正如 Eugene 建议的那样,如果您使用的是低级 JDBC,则在创建 Connection 对象后,您可以执行以下操作:

conn.createStatement().executeUpdate("set search_path to " + schemaName);
于 2012-05-02T20:42:26.357 回答
1

据我所知(我刚刚扫描了 4.1.7 文档),目前还没有办法将模式设置为默认值。

于 2011-08-30T18:52:52.343 回答
0

在 7.0 中,管理员可以通过发出以下命令在用户级别设置它:

alter user user_name search_path schema1,schema2;
于 2014-07-01T22:03:12.260 回答
0

如果我使用我的开发模式,我处理这个问题的方法是执行“设置搜索路径”命令。因此,在创建 Vertica 连接对象后,立即执行以下命令:

    "set search path to dev_myschema"

在我的应用程序代码中,我只是让我的 Vertica 对象检查环境/配置变量,如果存在“dev schema”设置,它会在建立连接时执行该语句。我的生产配置没有该设置,因此在这种情况下它只会使用默认模式,并且不会产生每次执行该语句的额外开销。

于 2012-03-26T21:58:47.783 回答
0

根据 sql 指南,默认模式是在搜索树中找到的第一个模式。也许您可以利用它并确保首先找到您的副本。

于 2011-09-28T07:00:28.610 回答