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:///api/util/status. 找到 可能需要调用Datastore API来删除资源 @opensas 你知道了吗?几周前我刚刚进入 ckan,现在我意识到当我删除一个资源时,该文件仍然存在于某个地方。您是否设法从系统中删除该文件? 【参考方案1】:

我用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_defaultpostgres 是超级用户)。

然后(可选择查找所有资源 UUID):

\dt 列出所有表格

那么:

DROP TABLE "RESOURCE ID";

(将 RESOURCE ID 替换为资源 UUID)

【讨论】:

以上是关于CKAN:删除资源时自动删除数据存储表的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 存储过程 删除表记录时删除不存在的记录也是显示删除成功

如何删除 Chrome 存储的自动填充数据?

索引-存储过程

[MSSQL]批量删除表名包含某字符串的数据表&批量删除存储过程包含某字符串的存储过程

mysql 隔段时间自动删除数据

数据库中标识主键因删除数据不连续的问题