2017-08-11 34 views
5

Trong lúc lưu lại thông tin cho lĩnh vực cơ sở dữ liệu các thiết lập như sau:Khôi phục dữ liệu gốc được lưu dưới dạng "???????" từ cơ sở dữ liệu mysql

character set: latin1 
collation: latin1_swedish_ci 

Một khi người dùng cập nhật các thông tin, tôi nhận thấy rằng nhiều thông tin được lưu dưới dạng "???????? ?????? ???????????????? ???? ????? " (Dấu hỏi) đến cơ sở dữ liệu. Thông tin tiếng Anh (ngôn ngữ) đã được lưu mà không có dấu hỏi. Tất cả các ngôn ngữ khác đã được lưu với dấu chấm hỏi.

Bây giờ tôi đã thay đổi bộ ký tự thành utf8 và tất cả ngôn ngữ được lưu đúng cách.

Vấn đề là tôi cần khôi phục thông tin được lưu dưới dạng dấu hỏi. ví dụ: "?????????????? ????????????????? ???? ?????"

XAMPP Version: phiên bản 5.6.19
Navicat 11.0.17

máy chủ cơ sở dữ liệu
Server phiên bản: 10.1.10-MariaDB - mariadb.org phân phối nhị phân

Web server
Apache/2.4.17 (Win32) OpenSSL/1.0.2d PHP/5.6.19 Phiên bản PHP: 5.6.19

phpMyAdmin
Thông tin phiên bản: 4.5.1

Hãy giúp tôi lấy dữ liệu gốc.

+0

Bạn có nghĩa là dấu chấm hỏi trong một hình vuông không? Hoặc các dấu hỏi thông thường như bạn đã viết? –

+0

có câu hỏi bình thường đánh dấu như được đưa ra trong ví dụ – Pragalath

+2

okay ... xin lỗi nhưng không có sự khác biệt giữa? và? ... Và tôi không nghĩ rằng bất kỳ Đăng Dữ liệu nào được ghi lại. Có vẻ như bạn đã mất dữ liệu này ... –

Trả lời

0

MySQL thay thế các ký tự đó bằng dấu chấm hỏi khi chúng được chèn vào cơ sở dữ liệu. Dữ liệu gốc bị mất vĩnh viễn - không có cách nào để khôi phục dữ liệu đó.

+1

nên tốt hơn để di chuyển sang phải .... không sử dụng cố gắng – Pragalath

0

Kiểm tra nhật ký php/apache/codeigniter của bạn để chèn/cập nhật cơ sở dữ liệu - có thể bạn sẽ tìm thấy dữ liệu gốc được chèn vào.

+0

bạn có thể cho tôi biết chính xác nơi tôi có thể tìm thấy nhật ký không? – Pragalath

0

Điều này xảy ra do cơ sở dữ liệu đối chiếu. Trong trường hợp cụ thể này, nó là latin1_swedish_ci.

Thực tế, collation là tập hợp các ký tự có thể được sử dụng trên các trường của bảng trong cơ sở dữ liệu. Nếu bạn cố gắng sử dụng một ký tự không có trong bộ ký tự của collation này, MySQL sẽ thay thế nó bằng một dấu hỏi, vì nó không biết ký tự này là gì.

Có nói rằng, không có cách nào để truy xuất lại dữ liệu của bạn. Cách duy nhất là quét qua một số nhật ký của ứng dụng hoặc MySQL (nếu có).

Các vấn đề liên quan