14/9/16

Error Establishing a Database Connection cách khắc phục

Chắc hẳn đôi lần bạn đã từng gặp lỗi Error Establishing a Database Connection khi truy cập website. Đây là lỗi phổ biến trong thiết lập kết nối cơ sở dữ liệu, xảy ra bởi nhiều nguyên nhân. Đối với những người mới bắt đầu sử dụng WordPress thì lỗi này làm bạn rất khó chịu. Trong bài viết này, mình sẽ tổng hợp các giải pháp giúp bạn tìm hiểu cũng như hướng dẫn khắc phục lỗi Error Establishing a Database Connection trong WordPress.


Lưu ý: Trước khi thực hiện bất kỳ một thay đổi cơ sở dữ liệu nào, hãy đảm bảo rằng bạn đã backup dữ liệu trước đó.

Lỗi Error Establishing a Database Connection ?

Error Establishing a Database Connection: Bạn nhận được lỗi này vì WordPress không thể thiết lập một kết nối cơ sở dữ liệu. Có nhiều lý do khác nhau làm WordPress không thể thiết lập kết nối cơ sở dữ liệu. Dưới đây là một trong những nguyên nhân sảy ra:

  • Có thể do thông tin đăng nhập cơ sở dữ liệu của bạn bị sai hoặc đã được thay đổi.
  • Có thể do máy chủ cơ sở dữ liệu của bạn không phản hồi.
  • Có thể do cơ sở dữ liệu của bạn bị hỏng.

Theo kinh nghiệm nhiều năm thiết kế website của mình thì lỗi này xảy ra phần lớn do lỗi ở server, tuy nhiên lỗi cũng xảy ra do các yếu tố khác.

Có phải lỗi xảy ra ở /wp-admin/ ?

Đầu tiên, bạn hãy đảm bảo rằng bạn nhận được cùng một lỗi trên cả front-end và back-end của trang web (wp-admin). Nếu trên cả hai trang này đều nhận được lỗi “Error establishing a database connection” thì bạn tiến hành các bước tiếp theo. Nếu bạn nhận được các lỗi khác trên wp-admin, ví dụ như lỗi “One or more database tables are unavailable hoặc The database may need to be repaired”  thì bạn cần phải sửa lỗi cơ sở dữ liệu của bạn.

Bạn sửa lỗi bằng cách thêm dòng sau vào file wp-config.php của bạn:

define('WP_ALLOW_REPAIR', true);

Tiếp theo, bạn có thể xem các thiết lập tại http://www.yoursite.com/wp-admin/maint/repair.php
dbrepair
Đây là chuẩn đoán đầu tiên khi gặp lỗi “Error establishing a database connection”. Nếu việc sửa chữa này không khắc phục được lỗi hoặc bạn gặp sự cố khi chạy sửa chữa thì thực hiện các cách khác dưới đây.

Lưu ý: Khi thực hiện sửa chữa và tối ưu hóa cơ sở dữ liệu của bạn, hãy bỏ đi phần này trong file wp-config.php.

Kiểm tra file wp-config.php

WP-Config.php là file cấu hình rất quan trọng trong toàn bộ trình cài đặt WordPress của bạn. Đây là nơi bạn xác định các thông tin để kết nối với cơ sở dữ liệu. Đầu tiên, bạn cần phải kiểm trong file wp-config.php, nó phải giống như sau:
define('DB_NAME', 'database-name');
define('DB_USER', 'database-username');
define('DB_PASSWORD', 'database-password');
define('DB_HOST', 'localhost');
Giá trị DB_HOST có thể không là localhost mà nó có thể khác tùy thuộc vào host của bạn. Đối với host phổ biến ở Việt Nam hay hosting nước ngoài như HostGator, BlueHost, Site5 thì nó là localhost.

Chú ý: Bạn có thể sửa lỗi bằng cách thay thế localhost bằng IP. Đây là cách phổ biến để sửa lỗi này khi chạy WordPress trên môi trường local server. Ví dụ trên MAMP, giá trị DB_Host khi thay đổi thành IP, IP là khác nhau đối với mỗi nhà cung cấp dịch vụ Web Hosting.
define('DB_HOST', '127.0.0.1:8889');
Nếu các thông tin trong file wp-config.php đều đúng (nhớ kiểm tra cả lỗi chính tả) thì tiếp theo chúng ta nghĩ tới trường hợp có vấn đề gì đó trên server.

Kiểm tra Host web của bạn (MySQL Server)

Về cơ bản, Error Establishing a Database Connection lỗi này được thông báo khi trang web của bạn nhận được quá nhiều lượng truy cập. Thông thường, Host server của bạn khi đó không thể xử lý được việc tải trang web, trang web của bạn sẽ rất chậm và thậm chí một số người dùng sẽ thấy lỗi. Lúc này, điều tốt nhất bạn nên làm là liên hệ với nhà cung cấp hosting và nhờ họ kiểm tra MySQL server của bạn.

Nếu bạn muốn kiểm tra MySQL server có đang hoạt động tốt không, bạn có thể kiểm tra các trang web khác trên cùng một server để xem chúng có gặp vấn đề gì không. Nếu các trang web đó cũng nhận được cùng một lỗi thì chắc chắn là có vấn đề ở MySQL server của bạn. Nếu không có bất kỳ trang web nào khác trên cùng tài khoản hosting với web đang gặp lỗi thì bạn đơn giản chỉ cần vào cPanel, thử truy cập vào phpMyAdmin và kết nối cơ sở dữ liệu. Tạo một file mới với tên testconnection.php và dán đoạn code dưới đây để xác minh xem người sử dụng cơ sở dữ liệu của bạn có được quyền kết nối không.
<?php $link = mysql_connect('localhost', 'root', 'password');
if (!$link)
{
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
Bạn thay thế user và mật khẩu của bạn, nếu kết nối thành công có nghĩa là người dùng của bạn được quyền kết nối và có vấn đề gì đó bị sai. Quay trở lại file wp-config để đảm bảo rằng mọi thông tin đều đúng (nhớ kiểm tra lại cả lỗi chính tả).

Nếu vào phpMyAdmin mà vẫn chưa thể kết nối với cơ sở dữ liệu thì chắc hẳn đã có gì đó xảy ra với server của bạn. Điều này không có nghĩa là MySQL server của bạn bị tắt mà có thể do người dùng của bạn không được quyền kết nối.


Trường hợp MySQL server của bạn đang hoạt động, tất cả các trang web khác trên máy chủ đang làm việc tốt ngoại trừ trang web đang báo lỗi thì bạn hãy thử vào phpMyAdmin xem còn thấy báo lỗi như dưới:
 – Access denied for user ‘foo’@’%’ (using password: YES)
Bạn hãy liên hệ với nhà cung cấp máy chủ – hosting nhờ sự hỗ trợ của họ. Họ sẽ thiết lập lại kết nối của người dùng, quyền truy cập được khôi phục và trang web của bạn sẽ hoạt động trở lại bình thường.

Tóm lại, nếu bạn nhận được lỗi bị từ chối truy cập khi kết nối với phpMyAdmin hoặc kiểm tra kết quả khi test file testconnection.php, bạn liên hệ với nhà cung cấp hosting và nhờ họ hỗ trợ sửa lỗi.

Các giải pháp khắc phục khác

Trường hợp 1

Khi bạn nhận được thông báo lỗi, cơ sở dữ liệu cần phải được sửa chữa nhưng ngay cả khi bạn đã sửa lỗi vẫn còn, thì bạn chạy truy vấn SQL bằng cách truy vấn vào phpMyAdmin như sau:
UPDATE wp_options SET option_value='YOUR_SITE_URL' WHERE option_name='siteurl'
Trường hợp 2

Sử dụng testconnection.php để kết nối cơ sở dữ liệu và thay đổi user trong file wp-config.php thành root. Sau đó, bạn thiết lập lại cơ sở dữ liệu user về như cũ và web truy cập bình thường(nhớ kiểm tra lại cả lỗi chính tả)

Trường hợp 3
Bạn xóa bỏ các nội dung của active_plugins và chỉnh sửa nội dung của recently_edited trong bảng wp_options. Bằng cách này có thể khắc phục được lỗi trên.
Giải thích:

Trang web của bạn là http://www.hoangweb.com/ có host server ở GoDaddy.
Bạn đăng nhập vào GoDaddy và đến My Account >> Web Hosting, bấm vào nút LAUNCH cho tên miền website và sẽ thấy một cửa sổ Hosting Control Center mới.

Bạn nhấp chuột vào Databases >> MySQL, chọn “Manage via phpMyAdmin” cho tên cơ sở dữ liệu của WordPress thì sẽ thấy mở một trình duyệt mới cho bạn nhập thông tin đăng nhập.
Trong bảng wp_options, bạn xóa bỏ các nội dung của active_plugins và chỉnh sửa nội dung của recently_edited.

Chú ý: Có thể những giải pháp trên không thể giúp xử lý được lỗi của bạn, do đó trước khi làm bất cứ điều gì bạn nên có đầy đủ bản backups để đề phòng sai sót. Có nhiều nhiều trường hợp chỉ cần tải lên bản backups mới của WordPress là đã sửa được lỗi.

Kết luận

Error Establishing a Database Connection thực sự là một lỗi gây phiền toái trong WordPress.

0 nhận xét: