Chuyển đến nội dung

Lỗi kết nối cơ sở dữ liệu trong WordPress: Cách sửa

Mọi trang đều hiện "Error establishing a database connection"? Kiểm tra máy chủ cơ sở dữ liệu, thông tin trong wp-config.php, bảng bị hỏng và giới hạn máy chủ, từng bước một.

Server room used for website hosting

Trang của bạn hiện một trang trắng với đúng một câu: “Error establishing a database connection.” Mọi trang, kể cả wp-admin, đều hiện cùng thông báo đó. WordPress không kết nối được tới cơ sở dữ liệu, nơi lưu toàn bộ bài viết, trang, cài đặt và đơn hàng.

Thông báo này dễ gây hoang mang, nhưng trong hầu hết trường hợp dữ liệu của bạn vẫn an toàn. Sự cố thường là thông tin kết nối sai, máy chủ cơ sở dữ liệu đang tắt hoặc quá tải, hoặc một bảng bị hỏng. Hướng dẫn này đi từ nguyên nhân phổ biến nhất đến nguyên nhân ít gặp hơn.

Trước khi bắt đầu: đừng cài lại WordPress hoặc tạo cơ sở dữ liệu mới. Việc đó có thể khiến khôi phục khó hơn rất nhiều. Hãy sao lưu các tệp trước nếu bạn làm được.

Bước 1: Kiểm tra máy chủ cơ sở dữ liệu có đang tắt không

Nếu lỗi xuất hiện đột ngột và bạn không thay đổi gì, máy chủ cơ sở dữ liệu có thể đang tắt hoặc quá tải. Điều này thường gặp trên hosting chia sẻ khi lưu lượng tăng đột biến.

  • Kiểm tra trang trạng thái hoặc kênh hỗ trợ của nhà cung cấp hosting xem có sự cố không.
  • Đăng nhập bảng điều khiển hosting và mở phpMyAdmin (hoặc công cụ cơ sở dữ liệu của nhà cung cấp). Nếu ở đó bạn cũng không mở được cơ sở dữ liệu, sự cố nằm ở máy chủ.
  • Nếu các trang khác trên cùng tài khoản hosting cũng hiện lỗi này, gần như chắc chắn là do máy chủ. Hãy liên hệ nhà cung cấp hosting.

Bước 2: Kiểm tra thông tin cơ sở dữ liệu trong wp-config.php

WordPress đọc bốn giá trị từ wp-config.php. Mở tệp trong File Manager hoặc qua SFTP và tìm:

define( 'DB_NAME', 'database_name' );
define( 'DB_USER', 'database_user' );
define( 'DB_PASSWORD', 'database_password' );
define( 'DB_HOST', 'localhost' );

Đối chiếu từng giá trị với cơ sở dữ liệu và người dùng được liệt kê trong bảng điều khiển hosting:

  • DB_NAME phải khớp chính xác với một cơ sở dữ liệu đang tồn tại, kể cả tiền tố mà nhà cung cấp thêm (ví dụ account_wp123).
  • DB_USER phải tồn tại và được gán cho cơ sở dữ liệu đó với đầy đủ quyền.
  • DB_PASSWORD phải là mật khẩu hiện tại. Nếu ai đó đã đổi mật khẩu người dùng cơ sở dữ liệu trong bảng điều khiển, hãy cập nhật ở đây. Khi không chắc, hãy đặt mật khẩu mới cho người dùng cơ sở dữ liệu rồi chép vào wp-config.php.
  • DB_HOST thường là localhost, nhưng một số nhà cung cấp dùng tên máy chủ riêng hoặc cổng như localhost:3306. Tài liệu của nhà cung cấp ghi giá trị đúng.

Đây là nguyên nhân phổ biến nhất sau khi chuyển trang hoặc đổi mật khẩu.

Bước 3: Thử kết nối bên ngoài WordPress

Để xác nhận thông tin đăng nhập có dùng được không, hãy tạo một tệp tạm tên dbtest.php trong thư mục gốc của trang:

<?php
$link = mysqli_connect( 'localhost', 'database_user', 'database_password', 'database_name' );
echo $link ? 'Connected' : 'Failed: ' . mysqli_connect_error();

Mở yoursite.com/dbtest.php trong trình duyệt. “Connected” nghĩa là thông tin đúng và sự cố nằm ở chỗ khác. “Failed” kèm “Access denied” nghĩa là tên người dùng hoặc mật khẩu sai. Hãy xóa tệp này ngay sau đó, vì tệp chứa mật khẩu cơ sở dữ liệu của bạn.

Bước 4: Sửa các bảng bị hỏng

Nếu wp-admin hiện một thông báo khác, chẳng hạn “One or more database tables are unavailable”, các bảng có thể đã hỏng. WordPress có công cụ sửa tích hợp. Thêm dòng này vào wp-config.php:

define( 'WP_ALLOW_REPAIR', true );

Truy cập yoursite.com/wp-admin/maint/repair.php và bấm Repair Database. Khi xong, hãy xóa dòng đó. Trang sửa chữa không yêu cầu đăng nhập khi thiết lập này đang bật.

Bạn cũng có thể sửa bảng trong phpMyAdmin: chọn cơ sở dữ liệu, đánh dấu tất cả các bảng, rồi chọn Repair table.

Bước 5: Kiểm tra URL trang và tiền tố bảng

Sau khi chuyển trang, hai vấn đề ít rõ hơn có thể gây lỗi kiểu kết nối:

  • Tiền tố bảng: $table_prefix trong wp-config.php (thường là wp_) phải khớp với tiền tố của các bảng trong cơ sở dữ liệu. Nếu các bảng có tên wp7x_options, tiền tố phải là wp7x_.
  • URL trang: nếu giá trị siteurl và home trong bảng wp_options vẫn trỏ tới tên miền cũ, bạn có thể gặp chuyển hướng hoặc lỗi. Hãy kiểm tra chúng trong phpMyAdmin.

Bước 6: Xem tài nguyên máy chủ

Nếu lỗi lúc có lúc không, máy chủ cơ sở dữ liệu có khả năng đang hết kết nối hoặc hết bộ nhớ khi tải cao. Nguyên nhân thường gặp là lưu lượng tăng đột biến, bot, plugin nặng và thiếu bộ nhớ đệm trang. Thêm bộ nhớ đệm trang, chặn bot lạm dụng và nâng gói hosting là các cách xử lý lâu dài thường dùng. Nhà cung cấp hosting có thể cho bạn biết bạn có đang chạm giới hạn hay không.

Cần đưa trang trở lại ngay? Dịch vụ WordPress Fix của chúng tôi chẩn đoán lỗi kết nối cơ sở dữ liệu, sửa các bảng bị hỏng và chỉnh lại cấu hình sau khi chuyển trang. Giá cố định $45, được xác nhận trước khi bắt đầu, kèm Bảo đảm dịch vụ của chúng tôi. Yêu cầu sửa.

Câu hỏi thường gặp

Tôi đã mất toàn bộ nội dung chưa?

Rất khó xảy ra. Lỗi này nghĩa là WordPress không kết nối được tới cơ sở dữ liệu, không có nghĩa cơ sở dữ liệu đang trống. Khi kết nối được sửa, nội dung của bạn sẽ trở lại.

Vì sao lỗi chỉ xảy ra đôi khi?

Lỗi không liên tục thường nghĩa là máy chủ cơ sở dữ liệu đang quá tải hoặc chạm giới hạn kết nối. Bộ nhớ đệm và hosting tốt hơn sẽ xử lý được việc này; đổi thông tin đăng nhập thì không.

Lỗi bắt đầu ngay sau khi tôi chuyển trang. Vì sao?

Tên cơ sở dữ liệu, người dùng, mật khẩu hoặc máy chủ của host mới khác với host cũ, còn wp-config.php vẫn giữ giá trị cũ. Xem hướng dẫn chuyển WordPress sang host mới.

Vẫn đang kẹt? Chúng tôi có thể sửa giúp bạn

Cho chúng tôi biết chuyện đang xảy ra. Chúng tôi xác nhận phạm vi và giá trước khi bất kỳ công việc nào bắt đầu.