sql >> Databáze >  >> RDS >> Mysql

Jak opravit nesprávnou hodnotu řetězce v MySQL

Někdy se při pokusu o vložení dat do tabulky MySQL nebo import externích dat do databáze MySQL může zobrazit chyba „Nesprávná hodnota řetězce“. V tomto článku se podíváme na to, jak opravit nesprávnou hodnotu řetězce v MySQL.


Jak opravit nesprávnou hodnotu řetězce v MySQL

Toto je běžná chyba, když se pokoušíte vložit hodnotu do tabulky MySQL, která nemá kódování UTF8 nebo znakovou sadu.


1. Zaškrtněte Výchozí znaková sada

Přihlaste se do MySQL a spusťte následující příkaz ke kontrole výchozího názvu znakové sady vaší databáze. Nahraďte název_databáze názvem své databáze.

mysql> SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "database_name";

Pokud vaše databáze nemá kódování UTF8, musíte jej změnit na UTF8. Před tím musíme udělat zálohu naší databáze.


2. Zálohujte databázi MySQL

Odhlaste se z MySQL a spusťte následující příkaz pro vytvoření zálohy databáze MySQL. Nahraďte user_name , heslo a název_databáze s vaším uživatelským jménem, ​​heslem a názvy databáze.

$ sudo mysql -u user_name -p pass_word database_name > backup.sql


3. Změnit znakovou sadu tabulek

Spuštěním následujícího příkazu změňte znakovou sadu všech tabulek v databázi na UTF8. Nahraďte název_databáze názvem své databáze

$ 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 umožňuje měnit znakovou sadu pouze jedné tabulky najednou. Může být únavné spouštět samostatné příkazy pro změnu znakové sady každé tabulky. Výše uvedený příkaz zobrazí seznam všech tabulek v databázi a převede jejich znakovou sadu na UTF8 jednu po druhé, automaticky.


4. Změnit znakovou sadu databáze

Přihlaste se do MySQL a spusťte následující příkaz pro změnu znakové sady databáze na UTF8. Nahraďte název_databáze názvem databáze.

mysql> ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;

Nyní, pokud chcete vložit data do databáze MySQL, nemělo by to způsobit chyby. Ubiq usnadňuje vizualizaci dat a jejich sledování na řídicích panelech v reálném čase. Vyzkoušejte Ubiq zdarma.

  1. Předávání ID uživatele spouštěčům PostgreSQL

  2. AFTER LOGON(Oracle) trigger v PostgreSQL s příponou – login_hook

  3. Oracle po uzavření sady výsledků neodstraní kurzory

  4. klauzule BETWEEN versus <=AND>=