设置Vertica数据库的默认架构

时间:2011-05-27 06:21:44

标签: jpa playframework vertica

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

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

的其他模型类中也没有用。

有没有办法在配置文件中指定模式名称,并通过连接方法和模型注释读取它?

感谢。

5 个答案:

答案 0 :(得分:7)

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

set search_path to dev_myschema

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

conn.createStatement().executeUpdate("set search_path to " + schemaName);

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我处理这个问题的方法是通过执行“set search path”命令,如果我正在使用我的开发模式。因此,只要创建了Vertica连接对象,就执行以下命令:

    "set search path to dev_myschema"

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

答案 4 :(得分:0)

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

alter user user_name search_path schema1,schema2;