postgresql – 无法使用DBIx :: Class :: Schema :: Versioned创建非虚拟视图

postgresql – 无法使用DBIx :: Class :: Schema :: Versioned创建非虚拟视图,第1张

概述我正在使用DBIx :: Class :: Schema :: Versioned,我想在数据库中创建一个新视图作为表.设置__PACKAGE __-> result_source_instance-> is_virtual(1);正确使用模式中的视图定义(不创建表),但是当我设置__PACKAGE __-> result_source_instance-> is_virtual(0);没有在数据 我正在使用DBIx :: Class :: Schema :: Versioned,我想在数据库中创建一个新视图作为表.设置__PACKAGE __-> result_source_instance-> is_virtual(1);正确使用模式中的视图定义(不创建表),但是当我设置__PACKAGE __-> result_source_instance-> is_virtual(0);没有在数据库中创建表并尝试获取结果集会抛出“关系不存在”错误(这是预期的).

我在文档中找不到任何关于如何在DBIx :: Class :: Schema :: Versioned中创建视图的引用.当我在不包含视图的旧版本和新版本之间运行差异时,文件sql / MyProject-Schema-38-Postgresql.sql包含用于创建视图的代码:

@H_301_13@-- VIEw: unlocked_pagesDROP VIEW unlocked_pages;CREATE VIEW unlocked_pages ( page_ID,username ) AS ...

但是,包含2版本之间差异的文件显示为空,因此在升级模式时,除了在dbix_class_schema_versions中添加新版本号外,不会执行任何 *** 作.这些是sql / MyProject-Schema-37-38-Postgresql.sql的内容:

@H_301_13@-- Convert schema 'sql/MyProject-Schema-37-Postgresql.sql' to 'sql/MyProject-Schema-38-Postgresql.sql':;-- No differences found;

我正在使用postgresql,Schema.pm中的定义是

@H_301_13@package MyProject::Schema;# based on the DBIx::Class Schema base classuse base qw/DBIx::Class::Schema/;use strict;use warnings;our $VERSION = 38;# This will load any classes within# MyProject::Schema::Result and MyProject::Schema::ResultSet (if any)__PACKAGE__->load_namespaces();__PACKAGE__->load_components(qw/Schema::Versioned/);__PACKAGE__->upgrade_directory('../script/sql/');1;

任何帮助是极大的赞赏!

解决方法 我不确定我理解这个问题,但这是我的看法.

创建视图是针对特定查询,硬编码sql来实现您认为DBIx :: Class不提供的内容,并使这些查询的结果可用于DBIx,并且能够使用通常的结果(集)类.

它并不意味着对应于postgres中的视图.就DBIx而言,“更新”视图意味着在视图类中使用更新的sql – 无需将其存储在数据库中.

如果你想在postgres中创建一个你想要使用的视图,你可以,但我不相信Schema :: Version与它有任何关系.毕竟,这些只是存储查询的两种不同方式,不是吗?

如果你想要版本视图,你可能需要查看一个完全不同的路由并使用像sqitch这样的东西来版本化你的sql文件,但是,无论如何,您的模式文件应该在版本控制系统中.

总结

以上是内存溢出为你收集整理的postgresql – 无法使用DBIx :: Class :: Schema :: Versioned创建非虚拟视图全部内容,希望文章能够帮你解决postgresql – 无法使用DBIx :: Class :: Schema :: Versioned创建非虚拟视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/1162818.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存