คำถามติดแท็ก database

Drupal ให้เลเยอร์ abstraction abstraction ที่เป็นมาตรฐานและเป็นมาตรฐานสำหรับการเข้าถึงเซิร์ฟเวอร์ฐานข้อมูล

1
การรวบรวมฟิลด์เทียบกับย่อหน้า
ผมใช้การเก็บฟิลด์ในเว็บไซต์ก่อนหน้านี้ของฉันและฉันต้องเผชิญกับปัญหาประสิทธิภาพการทำงานบางอย่างดังนั้นเวลานี้ผมกำลังมองหาทางเลือกสำหรับการเก็บฟิลด์ ผมหาคำตอบทางเลือกที่จะเก็บฟิลด์ แต่ฉันไม่พบวิธีแก้ปัญหาเหล่านี้แตกต่างกันหรือคล้ายกันมากเป็นพิเศษ [การรวบรวมฟิลด์และย่อหน้า ] บางทีใครบางคนสามารถช่วยอธิบายได้? เพื่อให้ฉันสามารถตัดสินใจได้ดี

1
กู้คืนเขตข้อมูลที่ถูกลบ
ฉันมีประเภทเนื้อหาที่มี 4 ฟิลด์ซึ่งแต่ละรายการเป็นการอ้างอิงคำศัพท์ มี 100 โหนดแต่ละการอ้างอิง 4 คำที่กำหนด ฉันลบหนึ่งในฟิลด์เหล่านี้โดยไม่ตั้งใจออกจากผู้ดูแลระบบ> โครงสร้าง> เนื้อหาประเภท> ประเภทเนื้อหา ... ทำให้มีโหนดทั้งหมด 100 โหนดที่สูญเสียคำอ้างอิงฟิลด์ที่สูญหายนี้ที่มีอยู่ หลังจากติดตั้งโมดูลผู้ดูแลระบบฐานข้อมูลฉันเห็นว่าฐานข้อมูลสำหรับเขตข้อมูลที่ถูกลบของฉันยังคงปรากฏอยู่มันถูกเปลี่ยนชื่อเป็น "field_deleted_field_74" ใช้ mysql ฉันสามารถเปลี่ยนชื่อฐานข้อมูลนี้กลับไปเป็น "field_data_field_originalname" - เช่นการใช้ชื่อเครื่องเดิมสำหรับฟิลด์ที่ถูกลบ นอกจากนี้ฉันยังสามารถเปลี่ยนค่าของคอลัมน์ที่ถูกลบภายในฐานข้อมูลนี้จาก '1' เป็น '0' ฉันได้ทำข้างต้นด้วยฐานข้อมูล 'ผี' อื่น ๆ ที่ฉันพบว่าถูกเรียกว่า "field_revision_field_74" ... ปัญหาของฉันตอนนี้คือฟิลด์ที่ถูกเปลี่ยนชื่อของฉันไม่ปรากฏเป็นฟิลด์ที่มีอยู่แล้วในฟิลด์จัดการประเภทเนื้อหาของฉันแสดงหรือที่ผู้ดูแลระบบ> รายงาน> รายการเขตข้อมูล เมื่อฉันเรียกใช้ 'เขตข้อมูลเขตข้อมูล Drush' จะหายไปเช่นกัน ฉันจะนำมันกลับมาได้อย่างไร ฉันสมมติว่ามีฐานข้อมูลอื่นที่อ้างอิงถึงที่ฉันต้องการแก้ไข ขอบคุณ!

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') …
11 7  database  entities 

7
ทำไม 'GROUP BY` ใน hook_views_query_alter () ไม่ทำงาน
ฉันใช้ Views 7.x-3.6 และฉันพยายามแก้ไขGROUP BYclause ด้วยhook_views_query_alter()ดังนี้: function mymodule_views_query_alter(&$view, &$query) { if ($view->name == "view_name"){ $query->add_groupby('field_name'); dpm($query); } } เมื่อฉันมองใน$query, ข้อถูกเปิดใช้งานได้อย่างถูกต้องแต่แบบสอบถาม SQL ไม่ได้รับผลกระทบคือประโยคไม่ปรากฏ:groupbyGROUP BY ในที่สุดสิ่งที่ฉันทำคือการใช้ Drupal core hook ( 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() says: ตารางที่ประกาศโดย hook นี้จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อเปิดใช้งานโมดูลเป็นครั้งแรกและจะถูกลบออกเมื่อถอนการติดตั้งโมดูล (ไฮไลท์เป็นของฉัน) และถ้าเป็นเช่นนั้นวิธีที่ดีที่สุดในการหลีกเลี่ยงการทำซ้ำคำจำกัดความสคีมาสำหรับตารางใหม่ในทั้ง 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 () s หลังจากทั้งหมด: 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 Master / Slave
ฉันได้ติดตั้งเซิร์ฟเวอร์ MySQL สองเครื่องด้วยการจำลองแบบ Master / Slave สำหรับฐานข้อมูล drupal และฉันยืนยันว่าฐานข้อมูลนั้นซิงค์และทำซ้ำ ตอนนี้ฉันกำลังพยายามชี้ drupal ไปยังฐานข้อมูลทั้งคู่โดยทั่วไปเพื่อวัตถุประสงค์ในการ failover / redundancy นั่นคือถ้าฉันต้องการรีบูตเซิร์ฟเวอร์ฐานข้อมูลหลักของฉันฉันไม่ต้องการให้เว็บไซต์ของเราล้มลง (การอ่านอย่างเดียวเป็นที่ยอมรับในสถานการณ์ความล้มเหลว) บนพื้นฐานของบทความต่อไปนี้ ฉันแก้ไข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', …

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%) นอกจากนี้เรายังใช้Viewsสำหรับบล็อกและหน้าทั้งหมดของเรา แต่ส่วนมากนั้นเป็นตัวเลือกสำหรับการแทนที่ด้วยโมดูลที่กำหนดเอง (เพื่อลดการสืบค้นฐานข้อมูลและความหนักเบาของการค้นหาเหล่านั้น) ผู้ใช้ทั้งหมดไม่ระบุชื่อ ยกเว้นผู้แก้ไขและผู้ดูแลเว็บที่ลงชื่อเข้าใช้เพียงไม่กี่คน

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
การใช้ฟังก์ชัน SQL ใน conditionals ใน Drupal 7 db_select ()
ฉันพยายามเขียนเงื่อนไขลงใน SQL WHERE clause ที่บังคับให้คอลัมน์เปรียบเทียบกับตัวแปรที่จะเปรียบเทียบในตัวพิมพ์เล็ก อย่างไรก็ตามฟังก์ชั่น addExpression ไม่สามารถทำได้ (เนื่องจากเป็นการใส่นิพจน์ในการเลือกฟิลด์ไม่ใช่ส่วนคำสั่งที่ นี่คือสิ่งที่ฉันได้ลอง: $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 = …
9 7  database 

2
ฉันจะเพิ่มค่าเริ่มต้นลงในตารางฐานข้อมูลโดยใช้ hook_install () ได้อย่างไร
ฉันกำลังสร้างโมดูลที่กำหนดเองด้วยสคีมาของตัวเองไม่กี่ตาราง ตารางเหล่านี้จำเป็นต้องมีค่าบางค่าที่เติมไว้ล่วงหน้าเพื่อให้โมดูลทำงาน (ตำแหน่งเริ่มต้นตัวเลือกที่เลือก ฯลฯ ) อะไรคือวิธีปฏิบัติที่ดีที่สุดในการแทรกค่าเริ่มต้นลงในตารางเหล่านี้ระหว่าง hook_install เนื่องจาก drupal_write_record ไม่พร้อมใช้งานฉันสามารถใช้ db_query ได้ แต่ฉันแค่ต้องการตรวจสอบให้แน่ใจว่าฉันไม่ได้ละเมิดกฎสำคัญใด ๆ โดยการทำเช่นนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.