Soms krijgt u de foutmelding "Onjuiste tekenreekswaarde" terwijl u probeert gegevens in de MySQL-tabel in te voegen of externe gegevens in de MySQL-database te importeren. In dit artikel zullen we bekijken hoe u een onjuiste tekenreekswaarde in MySQL kunt herstellen.
Hoe een onjuiste tekenreekswaarde in MySQL op te lossen
Dit is een veelvoorkomende fout wanneer u een waarde probeert in te voegen in een MySQL-tabel die geen UTF8-codering of tekenset heeft.
1. Controleer de standaardtekenset
Log in op MySQL en voer de volgende opdracht uit om de standaardtekensetnaam van uw database te controleren. Vervang database_name door uw databasenaam.
mysql> SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "database_name";
Als uw database geen UTF8-codering heeft, moet u deze wijzigen in UTF8. Daarvoor moeten we een back-up van onze database maken.
2. Back-up van MySQL-database
Log uit bij MySQL en voer de volgende opdracht uit om een back-up van uw MySQL-database te maken. Vervang gebruikersnaam , wachtwoord en database_name met respectievelijk uw gebruikersnaam, wachtwoord en databasenamen.
$ sudo mysql -u user_name -p pass_word database_name > backup.sql
3. Tekenset van tabellen wijzigen
Voer de volgende opdracht uit om de tekenset van alle tabellen in uw database te wijzigen in UTF8. Vervang database_name door uw databasenaam
$ 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
Met MySQL kunt u de tekenset van slechts één tabel tegelijk wijzigen. Het kan vervelend zijn om afzonderlijke opdrachten uit te voeren om de tekenset van elke tabel te wijzigen. De bovenstaande opdracht geeft een lijst van alle tabellen in een database en converteert hun tekenset automatisch één voor één naar UTF8.
4. Database-tekenset wijzigen
Log in op MySQL en voer de volgende opdracht uit om de tekenset van de database te wijzigen in UTF8. Vervang databasenaam door databasenaam.
mysql> ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
Als u nu gegevens in de MySQL-database invoegt, zou dit geen fouten moeten opleveren. Ubiq maakt het eenvoudig om data te visualiseren en te monitoren in realtime dashboards. Probeer Ubiq gratis.