Đôi khi bạn có thể gặp lỗi “Giá trị chuỗi không chính xác” khi cố gắng chèn dữ liệu vào bảng MySQL hoặc nhập dữ liệu bên ngoài vào cơ sở dữ liệu MySQL. Trong bài viết này, chúng ta sẽ xem xét cách sửa giá trị chuỗi không chính xác trong MySQL.
Cách sửa giá trị chuỗi không chính xác trong MySQL
Đây là lỗi phổ biến khi bạn cố gắng chèn giá trị vào bảng MySQL không có bộ ký tự hoặc mã hóa UTF8.
1. Kiểm tra Bộ ký tự mặc định
Đăng nhập vào MySQL và chạy lệnh sau để kiểm tra tên bộ ký tự mặc định của cơ sở dữ liệu của bạn. Thay thế database_name bằng tên cơ sở dữ liệu của bạn.
mysql> SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "database_name";
Nếu cơ sở dữ liệu của bạn không có mã hóa UTF8, thì bạn cần thay đổi nó thành UTF8. Trước đó, chúng ta cần sao lưu cơ sở dữ liệu của mình.
2. Sao lưu cơ sở dữ liệu MySQL
Đăng xuất khỏi MySQL và chạy lệnh sau để sao lưu cơ sở dữ liệu MySQL của bạn. Thay thế user_name , pass_word và database_name với tên người dùng, mật khẩu và tên cơ sở dữ liệu của bạn tương ứng.
$ sudo mysql -u user_name -p pass_word database_name > backup.sql
3. Thay đổi bộ ký tự của bảng
Chạy lệnh sau để thay đổi bộ ký tự của tất cả các bảng trong cơ sở dữ liệu của bạn thành UTF8. Thay thế database_name bằng tên cơ sở dữ liệu của bạn
$ sudo mysql --database=database_name -B -N -e "SHOW TABLES" | awk '{print "SET foreign_key_checks = 0; ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; SET foreign_key_checks = 1; "}' | mysql --database=database_name
MySQL cho phép bạn thay đổi bộ ký tự của một bảng tại một thời điểm. Có thể tẻ nhạt khi chạy các lệnh riêng biệt để thay đổi bộ ký tự của mỗi bảng. Lệnh trên liệt kê tất cả các bảng trong cơ sở dữ liệu và tự động chuyển đổi bộ ký tự của chúng thành UTF8.
4. Thay đổi bộ ký tự cơ sở dữ liệu
Đăng nhập vào MySQL và chạy lệnh sau để thay đổi bộ ký tự của cơ sở dữ liệu thành UTF8. Thay thế database_name bằng tên cơ sở dữ liệu.
mysql> ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
Bây giờ nếu bạn chèn dữ liệu vào cơ sở dữ liệu MySQL, nó sẽ không xảy ra lỗi. Ubiq giúp dễ dàng trực quan hóa dữ liệu và theo dõi chúng trong trang tổng quan thời gian thực. Dùng thử Ubiq miễn phí.