CKAN:删除资源时自动删除数据存储表
Posted
技术标签:
【中文标题】CKAN:删除资源时自动删除数据存储表【英文标题】:CKAN: automatically delete datastore tables when a resource is removed 【发布时间】:2015-03-18 07:25:53 【问题描述】:我有一个配置了文件存储、数据存储和数据推送器插件的 ckan 实例。
当我创建一个新资源时,datapusher 插件会正确地将一个新表添加到 datasoredb 并用数据填充它。
但是,如果我更新资源,则会执行一个新的 datapusher 任务,并且一切都会正确更新。在另一个链接资源的 ckan 实例上,我必须手动运行任务,但一切正常。
如果我删除资源,问题就来了。数据存储表仍然可用,甚至文件的链接仍然有效。
有没有办法将其配置为自动删除资源的每个痕迹???我的意思是,从文件存储中删除文件、从数据存储中删除表、api、链接等。
【问题讨论】:
您使用的是什么版本的 CKAN。根据版本,这可能会也可能不会。 我们使用的是 2.2.1,希望能解决这个问题。任何想知道他们拥有什么版本的人都可以从 http://我用http://demo.ckan.org 部分确认了这种行为,目前是 ckan_version: "2.4.1"
-
创建资源
通过数据推送器查询资源
删除资源
通过 datastore_search API 查询资源 -> 仍然可以查询。
尝试访问资源文件 -> 404 - 未找到。
将归档为错误。
也许用这个来删除?http://docs.ckan.org/en/latest/maintaining/datastore.html#ckanext.datastore.logic.action.datastore_delete
【讨论】:
【参考方案2】:这可以通过 CLI 实现:
sudo -u postgres psql datastore_default
(假设使用 these Datastore Extension settings 从包安装的数据存储区和数据库名称是 datastore_default
和 postgres
是超级用户)。
然后(可选择查找所有资源 UUID):
\dt
列出所有表格
那么:
DROP TABLE "RESOURCE ID";
(将 RESOURCE ID 替换为资源 UUID)
【讨论】:
以上是关于CKAN:删除资源时自动删除数据存储表的主要内容,如果未能解决你的问题,请参考以下文章
Oracle 存储过程 删除表记录时删除不存在的记录也是显示删除成功