首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解自动迁移的数据库结构

理解自动迁移的数据库结构
EN

Drupal用户
提问于 2013-05-23 14:00:09
回答 1查看 878关注 0票数 2

我正试图想出一个很好的方法,让这个传承下来的Drupal项目尽可能顺利地工作。理想情况下,我的目标是在本地进行更改,当这看起来还可以时,我应该能够将其git push到服务器。早些时候,我使自己能够通过git hooks/post-receiveCodeIgniter Migrate和一些bash脚本推动结构更改。这是很好的解决方案,我对我的Drupal项目的类似解决方案感兴趣。

理想情况下,我希望在git push上让我的php脚本生成一个.sql文件,将它发送到服务器,并让服务器执行它,这样它就可以理想地替换活动表。由于我们的主页将处理无法覆盖的产品、订单等,所以我不能简单地克隆数据库。

最让我困惑的是,如何在我的Drupal数据库中知道哪些表可以做什么?我有大约300个表,并且不完全确定这些表是如何相互依赖的,它处理结构更改,例如启用和禁用模块等等。有没有人在这方面有共同的见解?

也许有什么简单的办法可以解决我错过了什么?

EN

回答 1

Drupal用户

发布于 2013-05-23 19:49:29

您可以跳过迁移以下表:

  • 存取日志
  • cache_*
  • 会话
  • 看门狗

以上所有内容都包含了你通常不想跨越网站的材料。

如果不迁移,用于内置搜索的表的内容将由cron重新生成,但如果您有大量内容,则可能占用大量资源。但是,如果这不是一个问题,您也可以跳过迁移:

  • search_*

至于表名,Drupal严重依赖命名空间dicipline来避免冲突。因此,名为foobar的模块只应创建名称以foobar_开头的表(如果只创建单个表,则只创建foobar )。换句话说,您可以按其名称来判断数据库中哪些表“属于”哪个模块。这既适用于核心模块,也适用于定期提供的模块。至于自定义模块(即在Drupal.org框架之外管理的模块),您可能会发现这个命名约定的异常--但前提是它们是由bozos :-)编写的。

如果您查看您的数据库,您可能会发现很多表的名称都以field_开头。这些当然来自(核心) 字段模块,但我特别提到这些,因为这些表用于使用“核心字段”(一个关键的Drupal特性)创建的自定义内容类型。

至于表之间的相互依赖关系,通常只需查看属于同一模块的表中的字段。熟悉模式API也很有帮助。但是老实说:有时候你需要坐下来阅读源代码。

至于创建和删除表,行为良好的模块在安装时使用hook_schema (在模块的.install-file中找到)创建数据库表,并在未安装时自动删除相同的表。

请注意,只使用git推送模块并不能安装模块。它只是让它可以安装。要安装它,可以手动执行(使用管理员的GUI),也可以使用Drush编写脚本。

知道在Drupal实践社区中有明确的规则,模块只应该写入自己的表,这一点也很有用。如果客户端模块想要写入另一个模块的表,它必须通过模块的API,而不是通过与数据库的交互。模块的.info-file中跟踪模块之间的依赖关系。例如,这意味着您将无法禁用客户端模块所依赖的服务模块(前提是它们之间的依赖关系已被正确声明)。

票数 2
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/73983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档