Czasami możesz otrzymać błąd „Nieprawidłowa wartość ciągu” podczas próby wstawienia danych do tabeli MySQL lub importowania danych zewnętrznych do bazy danych MySQL. W tym artykule przyjrzymy się, jak naprawić nieprawidłową wartość ciągu w MySQL.
Jak naprawić nieprawidłową wartość ciągu w MySQL
Jest to powszechny błąd, gdy próbujesz wstawić wartość do tabeli MySQL, która nie ma kodowania UTF8 ani zestawu znaków.
1. Sprawdź domyślny zestaw znaków
Zaloguj się do MySQL i uruchom następujące polecenie, aby sprawdzić domyślną nazwę zestawu znaków swojej bazy danych. Zastąp database_name nazwą swojej bazy danych.
mysql> SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "database_name";
Jeśli twoja baza danych nie ma kodowania UTF8, musisz zmienić ją na UTF8. Wcześniej musimy wykonać kopię zapasową naszej bazy danych.
2. Kopia zapasowa bazy danych MySQL
Wyloguj się z MySQL i uruchom następujące polecenie, aby wykonać kopię zapasową bazy danych MySQL. Zastąp nazwa_użytkownika , hasło_hasło i nazwa_bazy z nazwą użytkownika, hasłem i nazwami bazy danych.
$ sudo mysql -u user_name -p pass_word database_name > backup.sql
3. Zmień zestaw znaków w tabelach
Uruchom następujące polecenie, aby zmienić zestaw znaków wszystkich tabel w bazie danych na UTF8. Zastąp database_name nazwą swojej bazy danych
$ 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 pozwala na zmianę zestawu znaków tylko jednej tabeli na raz. Uruchamianie oddzielnych poleceń w celu zmiany zestawu znaków każdej tabeli może być żmudne. Powyższe polecenie wyświetla listę wszystkich tabel w bazie danych i automatycznie konwertuje ich zestaw znaków na UTF8.
4. Zmień zestaw znaków bazy danych
Zaloguj się do MySQL i uruchom następujące polecenie, aby zmienić zestaw znaków bazy danych na UTF8. Zastąp database_name nazwą bazy danych.
mysql> ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
Teraz, jeśli wstawisz dane do bazy danych MySQL, nie powinno to dawać błędów. Ubiq ułatwia wizualizację danych i monitorowanie ich w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj Ubiq za darmo.