ฐานข้อมูล::setActiveConnection()
เพียงตั้งค่าเป็นการเชื่อมต่อที่ใช้งานการเชื่อมต่อที่กำหนดไว้ในไฟล์ settings.php หรือเพิ่มจากการเรียกครั้งก่อน ฐานข้อมูล::addConnectionInfo()
.
รหัสที่ถูกต้องจะเป็นรหัสต่อไปนี้
$postgis_database = [
'ฐานข้อมูล' => $drugis_postgis_connection->getdatabase(),
'ชื่อผู้ใช้' => $drugis_postgis_connection->getusername(),
'รหัสผ่าน' => $drugis_postgis_connection->getpassword(),
'host' => $drugis_postgis_connection->gethost(),
'ไดรเวอร์' => 'pgsql',
];
// $key $เป้าหมาย
ฐานข้อมูล::addConnectionInfo('postgis','default', $postgis_database);
// $เป้าหมาย $key
ฐานข้อมูล::setActiveConnection('default', 'postgis');
สังเกตลำดับพารามิเตอร์ในการเรียกเมธอดสองวิธีล่าสุด โปรดสังเกตลำดับดัชนีอาร์เรย์ที่ใช้ใน $ฐานข้อมูล
อาร์เรย์ที่ตั้งค่าไว้ในไฟล์ settings.php
// $key $เป้าหมาย
$databases['default']['default'] = [
'database' => 'ชื่อฐานข้อมูล',
'ชื่อผู้ใช้' => 'ชื่อผู้ใช้ sqluser',
'รหัสผ่าน' => 'sqlpassword',
'โฮสต์' => 'โลคัลโฮสต์',
'พอร์ต' => '3306',
'ไดรเวอร์' => 'mysql',
'คำนำหน้า' => '',
'เรียง' => 'utf8mb4_general_ci',
];
การเชื่อมต่อที่เพิ่มเข้ามาด้วย ฐานข้อมูล::addConnectionInfo()
ไม่ถาวร พวกมันถูกเพิ่มเข้าไปในคุณสมบัติคงที่ของ ฐานข้อมูล
ระดับ. ฟังก์ชัน/เมธอดทั้งหมดที่ต้องการใช้การเชื่อมต่อที่กำหนดไว้ใน $postgis_database
จำเป็นต้องเรียกใช้รหัสที่ฉันแสดงก่อนที่จะสอบถามฐานข้อมูลหรือบันทึกค่าในฐานข้อมูล
น่าจะดีกว่าถ้าเพิ่มการเชื่อมต่อพิเศษในการตั้งค่า
ข้อผิดพลาดที่ควรหลีกเลี่ยงคือการเรียกฟังก์ชัน Drupal ที่สอบถามตารางฐานข้อมูล Drupal เฉพาะหลังจากเรียก ฐานข้อมูล::setActiveConnection('default', 'postgis')
. เช่น โทร taxonomy_term_load_multiple_by_name()
หลังจาก ฐานข้อมูล::setActiveConnection('default', 'postgis')
จะไม่ทำงาน ยกเว้นในกรณีที่ฐานข้อมูล postgis/default มีสำเนาของตารางที่ใช้จาก Drupal (โดยปกติจะไม่เป็นเช่นนั้น เนื่องจากโมดูลที่ใช้ฐานข้อมูลอื่นจะไม่สร้างสำเนาของตารางที่ Drupal คาดว่าจะพบในฐานข้อมูลนั้น)
ก่อนเรียกใช้ฟังก์ชันเช่น taxonomy_term_load_multiple_by_name()
, รหัสควรโทร ฐานข้อมูล::setActiveConnection()
ซึ่งจะคืนค่าการเชื่อมต่อที่ใช้งานอยู่เป็นค่าเริ่มต้นที่ใช้โดย Drupal ซึ่งใช้สำหรับฐานข้อมูลที่มีตารางทั้งหมดที่ใช้จาก Drupal