我正在使用Play构建Web应用程序!使用Vertica数据库作为后端。 Vertica的JDBC连接字符串包含服务器和数据库名称,但我的表位于特定模式下(例如“dev_myschema”)。因此,我应该将我的表称为“dev_myschema.mytable”。生产模式中的所有这些表的精确副本(例如“prod_myschema”)都包含真实数据。
我想在配置文件中设置此架构名称,以便在这两个架构之间切换。现在,我在一个辅助类中有一个getConnection方法,它执行DB.getConnection()并将配置的模式设置为该连接对象的默认模式。但是,在其中提及它的实体注释(@Entity @Table(name = dev_myschema.mytable))
的其他模型类中也没有用。有没有办法在配置文件中指定模式名称,并通过连接方法和模型注释读取它?
感谢。
答案 0 :(得分:7)
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;