Mò mẫm MySQL luôn luôn giống như...thám hiểm hang động! Vừa háo hức, vừa...lo lắng! Bạn đã làm được một việc rất đáng "tự hào":
Bạn "tâm huyết" tạo một website "hoành văn tráng" miễn phí trên InfinityFree
Upload file PHP lên.
Mở trình duyệt thấy web chạy. Dù chỉ vài dòng text, vài hình ảnh
Bạn bắt đầu nâng cấp level:
"Giờ mình làm login + database cho nó sang xịn mịn!"
Theo "bài bản" đã tham khảo, bạn viết:
$conn = mysqli_connect("localhost", "root", "123456", "test");
Bấm chạy…
Và…
Warning: mysqli_connect(): (HY000/2002): Connection failed
Bạn ngồi im rất "hàn lâm"… rồi nghĩ:
"Ủa… mình làm đúng hết rồi mà???", "OK, kiểm tra lại lần nữa....Đúng hết rồi mà ta?!!"
Không. Bạn sai… nhưng là sai kiểu ai cũng từng sai
Khi dùng hosting miễn phí như InfinityFree, lỗi không connect được MySQL thường do:
- sai host (KHÔNG phải localhost)
- sai username/password
- sai database name
- chưa tạo database
Sự thật quan trọng (vỡ... mộng chiều xuân!)
Khi dùng InfinityFree:
KHÔNG dùng:
- localhost
- root
- 123456
Thay vào đó, bạn sẽ có dạng (không nhất thiết giống, nhưng nói chung không phải theo kiểu...localhost):
- Host: sqlXXX.infinityfree.com
- Username: abc_12345678
- Password: ********
- Database: abc_12345678_dbname
Nếu bạn vẫn dùng "localhost + root"
Khả năng cao MySQL sẽ nhìn bạn kiểu:
"Quí bạn là ai dzậy???"
Nếu dùng InfinityFree, bạn nên tham khảo thông tin tương tự bên dưới:
7 nguyên nhân phổ biến
(Chỉ với InfinityFree version, nếu bạn hosting trên các web hosting khác thì tùy cơ ứng biến nghe bạn...! Đừng quá tin vào DatVietLapTrinh....!)
1. Dùng "localhost" (lỗi kinh điển nhất)
Bạn viết:
mysqli_connect("localhost", ...)
Nhưng trên InfinityFree:
Database nằm ở máy chủ khác
Fix:
vào control panel. Tương tự hình trên
copy đúng DB Host
Đây là lỗi:
"nghĩ mình đang đá ở sân nhà… nhưng thực ra đang đá sân khách"
2. Sai username (rất dễ nhầm)
Username trên InfinityFree không phải:
root
Nó kiểu:
abc_12345678
Sai 1 ký tự → không connect
3. Sai database name (khả năng dễ dính cao)
Bạn tạo database tên:
mydb
Nhưng thật ra hệ thống đặt là:
abc_12345678_mydb
Fix:
copy chính xác từ control panel
4. Sai password (hoặc quên password)
Bạn nghĩ password là:
123456
Nhưng thực tế:
- bạn đã đặt password khác
- hoặc copy thiếu
Fix:
- reset password
- copy lại
5. Chưa tạo database
Bạn connect:
database = "abc_xxx_test"
Nhưng chưa tạo
Fix:
vào MySQL Databases
tạo database trước
6. Sai file config (copy code từ YouTube)
Bạn copy:
$conn = mysqli_connect("localhost", "root", "", "test");
Và quên sửa lại
Đây là lỗi:
"nhắm mắt copy paste "bất chấp", không suy nghĩ"
7. Upload đúng file… nhưng sửa nhầm file
Case rất "ảo":
- bạn sửa config.php
- nhưng upload file khác rất "ngon lành"
Kết quả:
- bạn fix đúng
- nhưng web vẫn lỗi. Thế mới đau!
Debug kiểu:
"mình đã sửa mà sao không được???"
Code mẫu đúng (ví dụ dùng cho InfinityFree)
Bạn nên viết kiểu này:
<?php
$conn = mysqli_connect(
"sqlXXX.infinityfree.com",
"abc_xxxxx",
"your_password",
"abc_xxxxx_dbname"
);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Kết nối thành công";
?>Test nhanh, gọn, nhẹ
Tạo file:
test_db.php
Upload lên host
Mở trình duyệt:
yourdomain.infinityfreeapp.com/test_db.php
Nếu thấy:
Kết nối thành công --> OK
Nếu không:
Vui lòng quay lại checklist
Checklist "chuẩn không cần chỉnh"
MySQL không connect trên host nói chung?
- Host có phải localhost không?
- Username đúng chưa?
- Database name đúng chưa?
- Password đúng chưa?
- Đã tạo database chưa?
- File config đã upload đúng chưa?
Sự thật...biết rồi, khổ lắm, nói mãi!
Khi học và "vọc" local tức là với máy tính nhà bạn:
- localhost
- root
Khi lên upload hosting:
Chắc chắn tất cả thay đổi
Và bạn:
"Ủa sao code giống mà không chạy???"
Vì:
môi trường khác = luật chơi khác
Tổng kết
MySQL không connect trên hosting miễn phí, ví dụ InfinityFree không phải lỗi "khó"
Nó chỉ là:
- sai host
- sai config
- sai… một chút xíu
Nhớ:
- Không dùng localhost
- Copy đúng thông tin
- Test từng bước
FAQ nhanh
Có dùng localhost được không?
Không (nếu trên InfinityFree)
Vì sao local chạy được mà online không chạy?
Vì config khác
Có nên học bằng hosting free không?
Có. Rất tốt cho newbie
Bạn có thể cũng đang gặp:
