Questions tagged «database»

Drupal提供了一个标准的,与供应商无关的抽象层,用于访问数据库服务器。

1
字段集合与段落
我在以前的站点中使用过Field Collection,但是遇到了一些性能问题,所以这次我正在寻找Field Collection的替代产品。我找到了答案的替代场馆藏。 但是我对这些解决方案有何不同(特别是[ 字段集合和段落 ])有什么不同。 也许有人可以帮助解释?这样我才能做出一个好的决定。

1
恢复已删除的字段
我有一个具有4个字段的内容类型,每个字段都是一个术语引用。有100个节点,每个节点分配4个术语参考。我无意中从admin> structure> content-types> mycontent-type ...中删除了这些字段之一...导致所有100个节点丢失了该丢失字段所包含的引用术语。 安装数据库管理模块后,我可以看到删除字段的数据库仍然存在,它已重命名为“ field_deleted_field_74” 使用mysql,我已经能够将此数据库重命名为“ field_data_field_originalname”-即对删除的字段使用原始计算机名 此外,我已经能够将该数据库中已删除列的值从“ 1”切换为“ 0”。 我已经用另一个我发现的名为“ field_revision_field_74”的“ ghost”数据库完成了上述操作... 我现在的问题是,我的重命名字段在内容类型管理字段显示中或在admin> reports> fields列表中都没有显示为预先存在的字段。当我运行“草场信息字段”时,它也丢失了。 我该如何找回它?我假设存在另一个需要编辑的数据库。 谢谢!

1
EntityFieldQuery真的效率低下吗?
我是Entity API的认可新手,但正在尝试解决该问题。我正在一个使用多种内容类型并附加了各个字段的网站上工作;没有什么花哨。因此,当我想检索一组条目时,由于无知,我一直直接调用数据库并执行以下操作: $query = db_select('node', 'n')->extend('PagerDefault'); $query->fields('n', array('nid')); $query->condition('n.type', 'my_content_type'); $query->leftJoin('field_data_field_user_role', 'role', 'n.nid = role.entity_id'); $query->condition('role.field_user_role_value', $some_value); $query->leftJoin('field_data_field_withdrawn_time', 'wt', 'n.nid = wt.entity_id'); $query->condition('wt.field_withdrawn_time_value', 0); $query->orderBy('n.created', 'desc'); $query->limit(10); $result = $the_questions->execute()->fetchCol(); (是的,我可能会把这些行折叠成一个$the_questions->语句;请暂时忽略它。) 试图用EntityFieldQuery重写它,我想出了: $query = new EntityFieldQuery(); $query ->entityCondition('entity_type', 'node') ->entityCondition('bundle', 'my_content_type') ->fieldCondition('field_user_role', 'value', $some_value) ->fieldCondition('field_withdrawn_time', 'value', 0) ->propertyOrderBy('created', 'desc') ->pager(10); …
11 7  database  entities 

7
为什么hook_views_query_alter()中的“ GROUP BY”不起作用?
我正在使用Views 7.x-3.6,并尝试通过以下方式更改GROUP BY子句hook_views_query_alter(): function mymodule_views_query_alter(&$view, &$query) { if ($view->name == "view_name"){ $query->add_groupby('field_name'); dpm($query); } } 当我查看时$query,该groupby子句已正确启用,但SQL查询不受影响:该GROUP BY子句未出现: 我最终做的是使用Drupal核心钩子(hook_query_alter()),它运行良好:SQL现在受到影响。 function mymodule_query_alter(QueryAlterableInterface $query) { $view_name = 'view_name'; if ($query->hasTag('views_' . $view_name)) { $query->groupBy('field_name'); } } 有什么原因导致我hook_views_query_alter()无法正常工作?我想知道是否有更清洁的方法来做到这一点。
11 7  database  views 

2
是否必须在hook_update_N()中创建新表?
当您在中创建新表时hook_schema(),是否也应在其中添加该表hook_update_N()?还是有一些技巧或我想念的东西来让databae-updates自动添加表? hook_update_N()的文档没有介绍引入新表的任何内容,而的文档则hook_schema()说: 首次启用该模块时,将自动创建此挂钩声明的表,并在卸载该模块时将其删除。 (重点是我的) 如果是这样,如何最好地避免在hook_update_N()和hook_schema()中都为新表重复架构定义。只需简单地引用以下架构: function hook_update_N(&$sandbox) { $schema = hook_schema(); $name = "foo"; $table = $schema["foo"]; db_create_table($name, $table); } 似乎可行,但是如果用户运行更新并运行两个或多个hook_update_N(),则再次更改表将失败。毕竟:第一个hook_update_N将已经安装了正确的数据库,第二个hook_update_M()将尝试添加/更改/更改已经是最新的列。 您如何处理?

3
如何检查数据库查询是否有结果?
如何检查以下代码是否有结果? 我尝试了空函数,但它总是返回FALSE $query = db_select('my_table', 't'); $query->condition('code', 10) ->fields('t', array('cid')); $result = $query->execute();
11 7  database 

2
Drupal主/从复制
我已经为drupal数据库设置了两个具有主/从复制功能的MySQL服务器,并且我已经确认数据库是同步和复制的。 我现在正试图将drupal指向这两个数据库,基本上是出于故障转移/冗余的目的。那就是如果我需要重启我们的主数据库服务器,我不希望我们的站点宕机。(在故障情况下可以接受只读) 根据以下文章。我修改settings.php如下: $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'sdrupal', 'username' => 'drupal', 'password' => 'topsecret', 'host' => 'masterdb.ptp.local', ); $databases['default']['slave'][] = array( 'driver' => 'mysql', 'database' => 'sdrupal', 'username' => 'drupal', 'password' => 'topsecret', 'host' => 'slavedb.ptp.local', ); 在关闭主服务器(服务mysqld停止)之前,配置是正确的-当我这样做时,我的站点呕吐: PDOException:SQLSTATE [HY000] [2013]在“读取初始通信数据包”时与MySQL服务器的连接断开,系统错误:drupal_is_denied()中的111(/www/includes/bootstrap.inc的1895行)。额外 PDOException:SQLSTATE [HY000] [2013]在“读取初始通信数据包”时与MySQL服务器的连接断开,系统错误:dblog_watchdog()中的111(/www/modules/dblog/dblog.module的第141行)。 使这项工作有效的诀窍是什么?

2
致命错误:调用未定义函数cache_get()[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我在服务器上收到以下错误 Fatal error: Call to undefined function cache_get() in includes/module.inc on line 665 Drush command terminated abnormally due to an unrecoverable error. [error] Error: Call to undefined function cache_get() in includes/module.inc, line 665 如何解决?
10 7  caching  database 

7
寻找Acquia Dev Desktop数据库设置
我正在使用Acquia Dev Desktop创建本地Drupal安装。我还将Bluehost用作服务。不幸的是,Bluehost对Drupal表使用表前缀。 因此,如果我从BlueHost本地导入某些内容,则需要在中设置一个表前缀settings.php: array( 'driver' => 'mysql', 'database' => 'databasename', 'username' => 'username', 'password' => 'password', 'host' => 'localhost', 'port' => 3306, 'prefix' => 'myprefix_', 'collation' => 'utf8_general_ci', ); 不幸的是,我找不到本地Acquia MySql数据库的正确数据库设置。Acquia也不setting.php在新系统上创建文件。 有人知道这些设置吗?谢谢。

5
Drupal数据库innodb或MyISAM?
我有一个Drupal网站,并且遇到性能问题。我发现了如何将数据库从MyISAM转换为InnoDB?表示通过切换可以提高性能。 如何确定我的MySQL数据库是InnoDB还是MyISAM?

2
哪些表应该或可以迁移到InnoDB,哪些表应该保留为MyISAM?
按照标题:是否有快速候选列表供表迁移到InnoDB?而且应该保留MyISAM。 一些其他信息 该站点具有相当大的读取负载,但是每小时会插入大约10个带有标签等的节点。 我们大量使用CCK(以形式的大量标准化表格content_field%)。 我们还将视图用于几乎所有的块和页面。但其中许多可以替换为自定义模块(以减少数据库查询和这些查询的繁重程度)。 用户都是匿名的;除了少数已登录的编辑者和网站管理员以外。

2
如何在自定义模块中定义和使用外部数据库连接
我正在开发一个将严重依赖外部数据库查询的模块。是否有在整个模块中定义和使用外部数据库连接的最佳实践? 该页面告诉我如何建立连接,但是没有告诉我将其放置在模块中的位置(特定的挂钩?),因此我只需定义一次即可。另外,是否总是需要执行“ db_set_active('YourDatabaseKey');” 或者我可以传递一个参数来设置要使用的数据库?我正在使用Drupal 7。
10 7  database 

1
db_update()与联接
有什么办法可以db_update()进行以下查询? UPDATE field_data_field_TEST as ft left join node as n on ft.entity_id = n.nid set n.type='test' where n.type='foo' 我尝试使用,db_update()->join();但是没有用。
9 7  database 

3
在Drupal 7 db_select()中的条件条件中使用SQL函数
我正在尝试将条件写入SQL WHERE子句中,以强制将列比较与要以小写形式进行比较的变量进行比较。但是,addExpression函数并不能完成此操作(因为这是将表达式放入字段选择中,而不是where子句中。 这是我尝试过的: $category = 'mobile wifi'; $query = db_select('taxonomy_term_data', 'ttd') ->fields('ttd', array('tid')); $query->innerJoin('taxonomy_vocabulary', 'tv', 'ttd.vid = tv.vid'); $query->addExpression("LOWER(ttd.name) = $category"); $result = $query->condition('machine_name', 'images_cat', '=') ->execute() ->fetchAssoc(); 和这个: $category = 'mobile wifi'; $query = db_select('taxonomy_term_data', 'ttd') ->fields('ttd', array('tid')); $query->innerJoin('taxonomy_vocabulary', 'tv', 'ttd.vid = tv.vid'); $result = $query->condition('machine_name', 'images_cat', '=') ->condition('LOWER(ttd.name)', …
9 7  database 

2
如何使用hook_install()将默认值添加到数据库表?
我正在创建一个带有几个表的自定义模块的自定义模块。这些表需要预先填充一些值才能使模块正常工作(默认位置,选择选项等)。 在hook_install期间将默认值插入这些表的最佳实践是什么? 由于drupal_write_record不可用,因此我可以使用db_query,但我只想确保这样做不会违反任何基本规则。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.