คุณเปิดหน้าภาพรวมการดูแลระบบของ Nextcloud แล้วเห็นข้อความว่า “ฐานข้อมูลขาดดัชนีบางส่วน” คำเตือนนี้อาจปรากฏขึ้นหลังจากการอัปเกรด เนื่องจาก Nextcloud สามารถเพิ่มดัชนีใหม่ให้กับตารางที่มีอยู่ได้เมื่อเวลาผ่านไป และไม่ได้สร้างดัชนีเหล่านั้นโดยอัตโนมัติเสมอไปในฐานข้อมูลขนาดใหญ่ การขาดดัชนีอาจทำให้การสืบค้นฐานข้อมูลบางอย่างช้าลง วิธีแก้ไขที่รองรับคือocc db:add-missing-indicesคำสั่ง ในตัว
ก่อนที่จะเปลี่ยนแปลงสคีมา โปรดตรวจสอบให้แน่ใจว่าคุณกำลังใช้คำสั่งสำหรับการติดตั้ง Nextcloud ที่ถูกต้อง ทำการสำรองข้อมูลฐานข้อมูล และใช้ผู้ใช้ระบบปฏิบัติการของเว็บเซิร์ฟเวอร์ สำหรับเวอร์ชันที่คำสั่งรองรับ ให้ดูตัวอย่าง SQL ที่เสนอด้วยคำสั่ง จากนั้น--dry-runเรียกใช้การซ่อมแซมและตรวจสอบภาพรวมการดูแลระบบอีกครั้ง
คำเตือนนั้นหมายความว่าอย่างไร
ดัชนีฐานข้อมูลคือโครงสร้างที่ช่วยให้ฐานข้อมูลค้นหาแถวได้โดยไม่ต้องสแกนทั้งตาราง Nextcloud และแอปต่างๆ กำหนดดัชนีสำหรับตารางและฟิลด์ที่ใช้งาน เมื่อ Nextcloud เวอร์ชันใหม่กว่าหรือแอปเวอร์ชันใหม่กว่าเพิ่มดัชนีที่การติดตั้งที่มีอยู่ยังไม่มี หน้าผู้ดูแลระบบอาจรายงานความไม่ตรงกันนี้ ซึ่งเป็นคำเตือนเกี่ยวกับการบำรุงรักษาสคีมา ไม่ได้หมายความว่าฐานข้อมูลเสียหายหรือไฟล์ของผู้ใช้หายไปแต่อย่างใด
คู่มือการดูแลระบบของ Nextcloud ระบุว่าสามารถเพิ่มดัชนีได้ในภายหลัง รวมถึงเพื่อปรับปรุงประสิทธิภาพ และแนะนำให้ผู้ดูแลระบบเรียกใช้คำสั่ง `index` occ db:add-missing-indicesการเพิ่มดัชนีอาจใช้เวลานาน โดยเฉพาะอย่างยิ่งกับตารางขนาดใหญ่ และการโหลดฐานข้อมูลหรือพฤติกรรมการล็อกอาจแตกต่างกันไปตามเอนจินฐานข้อมูลและปริมาณงาน ควรวางแผนการเปลี่ยนแปลงในช่วงเวลาที่ไม่ค่อยมีการใช้งานหากอินสแตนซ์ของคุณกำลังยุ่งอยู่
ก่อนที่คุณจะเริ่มการซ่อมแซม
- ตรวจสอบเส้นทางการติดตั้งและเวอร์ชันเรียกใช้คำสั่งจากไดเร็กทอรีที่มี
occสคริปต์ของการติดตั้งที่ต้องการ หรือระบุเส้นทางแบบเต็มของสคริปต์นั้น - สำรองข้อมูลฐานข้อมูลใช้ขั้นตอนการสำรองข้อมูลตามปกติสำหรับ MariaDB/MySQL, PostgreSQL หรือ SQLite ตรวจสอบให้แน่ใจว่าการสำรองข้อมูลเสร็จสมบูรณ์และคุณรู้วิธีการกู้คืนข้อมูล
- ค้นหาผู้ใช้ HTTPใช้บัญชีที่รันเว็บเซิร์ฟเวอร์สำหรับ Nextcloud ตัวอย่างทั่วไปได้แก่
www-dataบน Debian หรือ Ubuntu, apacheบน Fedora หรือ CentOS, httpบน Arch และwwwrunบน openSUSE การติดตั้งใช้งานของคุณอาจแตกต่างออกไป - ตรวจสอบตัวเลือกคำสั่งคู่มือการใช้งาน Nextcloud 35 เวอร์ชันเสถียรได้ระบุรายละเอียด
--dry-runไว้ หากเวอร์ชันที่คุณติดตั้งไม่รู้จักตัวเลือกนี้ ให้ดูocc db:add-missing-indices --helpข้อมูลจากเวอร์ชันนั้นและข้ามการแสดงตัวอย่างไป แทนที่จะสันนิษฐานว่าตัวเลือกนั้นมีอยู่
คู่มือการสำรองข้อมูลอย่างเป็นทางการระบุฐานข้อมูล การกำหนดค่า ไดเร็กทอรีข้อมูล และส่วนประกอบการติดตั้งอื่นๆ ที่ควรเก็บรักษาไว้สำหรับการสำรองข้อมูลแบบเต็ม สำหรับการดำเนินการเกี่ยวกับสคีมานี้ อย่างน้อยที่สุดควรทำการสำรองข้อมูลฐานข้อมูลที่ผ่านการทดสอบแล้ว โดยใช้ขั้นตอนที่เหมาะสมสำหรับฐานข้อมูลของคุณ
ขั้นตอนที่ 1: เปิดเชลล์ในระบบติดตั้ง Nextcloud
สำหรับการติดตั้งบนระบบ Linux แบบดั้งเดิม ให้เชื่อมต่อกับเซิร์ฟเวอร์ผ่าน SSH และเปลี่ยนไปยังไดเร็กทอรี Nextcloud โดยทั่วไปแล้ว เส้นทางใน Ubuntu จะเป็น/var/www/nextcloudแต่ให้ใช้เส้นทางบนเซิร์ฟเวอร์ของคุณ
cd /var/www/nextcloud
sudo -E -u www-data php occ status
ตรวจสอบให้แน่ใจว่าผลลัพธ์สถานะระบุถึงอินสแตนซ์ที่ติดตั้งไว้ตามที่คาดไว้ หากคุณใช้ไบนารี PHP ที่แตกต่างจากค่าเริ่มต้นของเชลล์สำหรับเว็บเซิร์ฟเวอร์phpให้ใช้เวอร์ชัน PHP ที่เข้ากันได้เดียวกันสำหรับoccการทำงานoccในฐานะผู้ใช้ HTTP จะช่วยรักษาสิทธิ์การเป็นเจ้าของไฟล์และสิทธิ์การเข้าถึงตามที่คาดไว้
ขั้นตอนที่ 2: ดูตัวอย่างการเปลี่ยนแปลงดัชนี
หากเวอร์ชันที่คุณติดตั้งรองรับ ให้ทำการทดสอบแบบจำลองก่อน:
sudo -E -u www-data php occ db:add-missing-indices --dry-run
การทดสอบแบบจำลองจะแสดงตัวอย่างคำสั่ง SQL โดยไม่นำไปใช้งานจริง อ่านผลลัพธ์และยืนยันว่าเกี่ยวข้องกับดัชนีที่หายไปที่คุณต้องการแก้ไข หากผลลัพธ์ระบุตารางหรือดัชนีที่คุณไม่รู้จัก ให้จดชื่อที่แน่นอนและตรวจสอบว่าแอปพลิเคชันที่เกี่ยวข้องได้รับการติดตั้งและเป็นเวอร์ชันล่าสุดหรือไม่ อย่าคัดลอกคำสั่ง SQL ที่แสดงตัวอย่างไปวางในคอนโซลฐานข้อมูลเพื่อใช้เป็นทางลัด
ขั้นตอนที่ 3: เพิ่มดัชนีที่ขาดหายไป
เมื่อการแสดงตัวอย่างเสร็จสิ้นและข้อมูลสำรองพร้อมแล้ว ให้เรียกใช้คำสั่งซ่อมแซมที่ระบุไว้ในเอกสาร:
sudo -E -u www-data php occ db:add-missing-indices
คำสั่งนี้จะตรวจสอบตารางฐานข้อมูลและสร้างดัชนีที่กำหนดไว้ในสคีมาแต่ไม่มีอยู่ในเวอร์ชันปัจจุบัน รอให้กระบวนการเสร็จสิ้น ในฐานข้อมูลขนาดใหญ่ กระบวนการนี้อาจใช้เวลานาน หลีกเลี่ยงการขัดจังหวะขณะที่กำลังเปลี่ยนแปลงสคีมา เอกสารของ Nextcloud ระบุว่าสามารถเรียกใช้คำสั่งนี้ได้ในขณะที่อินสแตนซ์ยังคงออนไลน์อยู่ โหมดบำรุงรักษาไม่ได้ระบุว่าเป็นข้อกำหนดเบื้องต้นสำหรับการซ่อมแซมเฉพาะนี้ ปฏิบัติตามกระบวนการควบคุมการเปลี่ยนแปลงของคุณเองหากจำเป็นต้องมีช่วงเวลาบำรุงรักษา
Docker และวิธีการติดตั้งประเภทอื่นๆ
ในการใช้งานแบบคอนเทนเนอร์ ให้รันoccภายในคอนเทนเนอร์แอปพลิเคชัน Nextcloud ไม่ใช่ในคอนเทนเนอร์ฐานข้อมูล ชื่อคอนเทนเนอร์และบริการอาจแตกต่างกัน ดังนั้นให้ตรวจสอบการใช้งานของคุณและแทนที่ด้วยชื่อที่ถูกต้อง สำหรับคอนเทนเนอร์ Docker ที่ชื่อnextcloudรูปแบบจะเป็นดังนี้:
docker exec --user www-data nextcloud php occ db:add-missing-indices
สำหรับ Docker Compose รูปแบบที่เกี่ยวข้องคือdocker compose exec -u www-data <nextcloud-service> php occ db:add-missing-indices. การติดตั้งแบบแพ็กเกจบางอย่างใช้คำสั่งเฉพาะหรือผู้ใช้คอนเทนเนอร์ที่แตกต่างกัน โปรดใช้คำแนะนำสำหรับแพ็กเกจนั้นๆ โดยเฉพาะ อย่าคัดลอกชื่อคอนเทนเนอร์จากการตั้งค่าของผู้อื่นโดยไม่ตรวจสอบให้แน่ใจก่อน
หากคำสั่งล้มเหลวหรือคำเตือนยังคงอยู่
- ไม่ได้รับอนุญาต:โปรดตรวจสอบผู้ใช้ HTTP และเส้นทางการติดตั้ง อย่าแก้ไขปัญหานี้โดยการเรียกใช้คำสั่งในฐานะ root เว้นแต่เอกสารประกอบการใช้งานของคุณจะกำหนดให้ใช้ตัวห่อหุ้มที่มีสิทธิ์พิเศษโดยเฉพาะ โดยทั่วไปแล้วกระบวนการ PHP ควรทำงานในฐานะผู้ใช้เว็บเซิร์ฟเวอร์
- ข้อผิดพลาดในการเชื่อมต่อฐานข้อมูลหรือ PHP:ตรวจสอบบันทึกของ Nextcloud, สถานะการทำงานของบริการฐานข้อมูล, เวอร์ชัน PHP ที่กำหนดค่าไว้ และผลลัพธ์ของคำสั่ง แก้ไขปัญหาการเชื่อมต่อหรือปัญหาขณะทำงานก่อนที่จะเรียกใช้คำสั่ง schema อีกครั้ง
- ข้อผิดพลาดเกี่ยวกับคีย์ซ้ำหรือดัชนีที่ไม่ซ้ำกัน:หยุดการทำงานและบันทึกข้อความแสดงข้อผิดพลาดทั้งหมดไว้ ข้อผิดพลาดนี้อาจบ่งชี้ถึงแถวที่มีข้อขัดแย้งซึ่งทำให้ไม่สามารถสร้างดัชนีที่ไม่ซ้ำกันได้ ระบุแอปและตารางที่ได้รับผลกระทบ ยืนยันเวอร์ชันของแอปและ Nextcloud และปรึกษาผู้ดูแลแอปหรือผู้ดูแลระบบที่คุ้นเคยกับฐานข้อมูลนั้น อย่าลบแถวหรือลบดัชนีโดยปราศจากการวินิจฉัยเฉพาะข้อมูลและการสำรองข้อมูล
- ข้อความ "ไม่พบคำสั่ง" หรือตัวเลือกไม่รองรับ:โปรดตรวจสอบให้แน่ใจว่าคุณอยู่ในระบบ Nextcloud ที่ถูกต้อง และตรวจสอบ
php occ listในphp occ help db:add-missing-indicesฐานะผู้ใช้ HTTP เวอร์ชันเก่าอาจไม่มีตัวเลือกใหม่ทั้งหมด - ข้อความเตือนยังคงปรากฏอยู่:โปรดรีเฟรชภาพรวมการดูแลระบบหลังจากคำสั่งทำงานเสร็จสิ้นอย่างสำเร็จ อ่านชื่อดัชนีและชื่อตารางที่ระบุในข้อความเตือนอย่างละเอียด อาจมีดัชนีหายไปมากกว่าหนึ่งรายการ ดัชนีใหม่ที่ถูกเพิ่มเข้ามาจากการอัปเดตแอป การดำเนินการฐานข้อมูลล้มเหลว หรือความไม่ตรงกันของสคีมาที่คำสั่งนี้ไม่สามารถแก้ไขได้
อย่าสับสนระหว่างดัชนีที่หายไปกับคอลัมน์หรือคีย์หลักที่หายไป เอกสารของ Nextcloud มีคำสั่งแยกต่างหากสำหรับการเปลี่ยนแปลงโครงสร้างข้อมูลเหล่านั้น เช่นdb:add-missing-columnsและdb:add-missing-primary-keysเรียกใช้คำสั่งซ่อมแซมที่แตกต่างกันเฉพาะเมื่อคำเตือนของผู้ดูแลระบบหรือเอกสารเฉพาะเวอร์ชันระบุให้ทำเช่นนั้น
ตรวจสอบผลลัพธ์
- รอจนกว่า
db:add-missing-indicesทางออกและรายงานจะเสร็จสมบูรณ์ เช่นDone. - โหลดหน้าภาพรวมการดูแลระบบใหม่ และตรวจสอบให้แน่ใจว่าคำเตือนเกี่ยวกับดัชนีที่หายไปนั้นหายไปแล้ว
- หากยังคงอยู่ ให้เปรียบเทียบชื่อตารางและดัชนีกับผลลัพธ์ของคำสั่งอย่างถูกต้อง แทนที่จะรันคำสั่งซ้ำโดยไม่ตรวจสอบให้ดี
- ตรวจสอบบันทึกของ Nextcloud และสถานะฐานข้อมูลเพื่อหาข้อผิดพลาดใหม่ จากนั้นยืนยันว่าการเข้าถึงไฟล์ตามปกติและแอปพลิเคชันที่ใช้ตารางที่ได้รับผลกระทบยังคงทำงานได้
- เก็บไฟล์สำรองไว้จนกว่าระบบจะทำงานได้ตามปกติและนโยบายการเก็บรักษาข้อมูลของคุณอนุญาตให้ลบได้
สำหรับไวยากรณ์คำสั่งปัจจุบัน โปรดดูที่เอกสารอ้างอิงคำสั่งฐานข้อมูลและดัชนีของ Nextcloudสำหรับข้อกำหนดของผู้ใช้และ PHP โปรดดูที่การใช้คำสั่ง occและคู่มือการสำรองข้อมูล Nextcloudหน้าเว็บที่เสถียรเหล่านี้ระบุว่าคู่มือปัจจุบันคือ Nextcloud Server 35 เมื่อตรวจสอบเมื่อวันที่ 6 ตุลาคม 2026 เส้นทาง ตัวเลือก และคำแนะนำในการจัดแพ็กเกจอาจแตกต่างกันในรุ่นอื่นหรือประเภทการปรับใช้