2015-03-18 7 views
12

Ich habe eine MySQL 5.0.84 läuft in einem Slackware 13.0 Staging Server und wollte eine einzelne Tabelle auf einen anderen Server kopieren, die war gebaut, um Ubuntu 14.04 OS für einige andere Tests zu verwenden. Ich habe eine mysqldump dieser Tabelle genommen und auf die testing server kopiert. Ich erhalte den folgenden Fehler, wenn ich versuche, die Speicherabbilddatei wiederherzustellen.MySQL Fehler 1231 (42000): Variable 'Zeichensatz_client' kann nicht auf den Wert von 'NULL' gesetzt werden

ERROR 1231 (42000):Variable 'character_set_client' can't be set to the value of 'NULL'

Bitte helfen Sie mir, wie Sie diese Fehler zu beheben. Vielen Dank!

Antwort

37

Ich habe einige Suche im Internet und reparierte es schließlich.

Der folgende Text wurde am Anfang der Datei mysqldump hinzugefügt und die Wiederherstellung war erfolgreich.

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 
/*!40103 SET @[email protected]@TIME_ZONE */; 
/*!40103 SET TIME_ZONE='+00:00' */; 
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */; 
+0

Dies zeigt ein Problem, wenn ich @@, wenn ich die Dump-Datei mit Hilfe von phpMyAdmin erzeugt, gab es nur ein @. Irgendwelche Ideen ? –

+0

Danke. Das hat es auch für mich behoben. Unter Ubuntu 16.04, Neuinstallation, wenn das irgendjemand anderen hilft. –

+0

Wo finde ich den mysqldump? – nethken

14

ich geändert haben

/*!40101 SET character_set_client = @saved_cs_client */; 

zu

/*!40101 SET character_set_client = 'utf8' */; 

in der Dump-Datei nach dem Code zum Erstellen der Tabelle.

+1

utf-8 hat nicht funktioniert. aber das Hinzufügen von utf8 hat funktioniert. –

+1

Confimed, muss es "utf8" sein. –

2

auf dem Weg, öffnen Sie die SQL-Datei, am Ende tun del:

/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; 
    /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; 
    /*!40101 SET [email protected]_COLLATION_CONNECTION */; 

und Quelle sie wieder, dann gut für mich!

0

Nun, dank all der Antworten, Es hat mir nur geholfen, mein Problem zu lösen. Aber das Kopieren und Einfügen von Codes von oben funktionierte nicht für mich. So exportierte ich SQL-Datei, die bereits in der Datenbank war und von dort nahm ich den Code und fügte folgendes an den Anfang meiner SQL-Datei

-- phpMyAdmin SQL Dump 
-- version 4.7.0 
-- https://www.phpmyadmin.net/ 
-- 
-- Host: 127.0.0.1 
-- Generation Time: Aug 16, 2017 at 07:24 AM 
-- Server version: 10.1.25-MariaDB 
-- PHP Version: 7.1.7 

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 
SET AUTOCOMMIT = 0; 
START TRANSACTION; 
SET time_zone = "+00:00"; 


/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8mb4 */; 

Da dieser obere Abschnitt in meinem SQL-Dokument fehlte zu importieren. Dann war der Import erfolgreich. Ich hoffe, das hilft auch anderen.