• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

WAMP MySQL Dump geht, aber Import geht nicht :-(

ldi

Member
Tach Leude !

Habe ein kleines Prob mit meiner MySQL. Habe mit dem Befehl mysqldump einen dump gemacht der auch funktioniert hat.
(mysqldump -u user --p cds > test.sql)

danach probiert den dump via mysql -u user -p passwort -h localhost datenbank < test.sql wieder einzulesen, aber ich bekomme immer nur Fehlermeldungen. Den Dump habe ich aus einer Datenbank namens ldi gemacht und es ist eine Tabelle namens cds.

Beim Import habe ich versucht, die Tabelle cds in eine andere Datenbank names test zu importieren. Nix zu machen. Nur Fehlermeldungen.

Hier die Fehlermeldungen:

1.)
mysqlimport: Error: Table 'test.cds' doesn't exist, when using table: cds

oder

2.)
ERROR 1064 at line 11: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Interpret varchar(100) NOT NULL default '', CD Name varchar(1

(sieht so aus alls rafft er was nicht !?)



Das Dump File hat folgenden Inhalt:

-- MySQL dump 9.11
--
-- Host: localhost Database: ldi
-- ------------------------------------------------------
-- Server version 4.0.20a-nt

--
-- Table structure for table `cds`
--

CREATE TABLE cds (
CD Interpret varchar(100) NOT NULL default '',
CD Name varchar(100) NOT NULL default ''
) TYPE=MyISAM COMMENT='eine Test Datenbank';

--
-- Dumping data for table `cds`
--

INSERT INTO cds VALUES ('ACDC','Hells Bells');
INSERT INTO cds VALUES ('Dire Straits','Brothers in Arms');



So nun bitte Butter bei die Fische.

Um den erzeugten Dump von mysqldump wieder einzulesen nimmt man doch unter Windows die mysql.exe und nicht die mysqlimport.exe ?!

Muss man vorher die Tabelle in der neuen Datenbank wieder anlegen ?!
(-> wäre doch Schwachsinn !!!)

Please help me !

DANKE !
 

moenk

Administrator
Teammitglied
Probier mal: Komplette Inserts beim Export mit phpMyAdmin, zum einlesen Option "-w" verwenden.
 
OP
ldi

ldi

Member
Danke für Deine Antwort !

Aber ich will nicht bzw. kann nicht mit PHPMyAdmin arbeiten, ich will das über die Konsole machen, denn PHPMyAdmin schmiert immer ab, weil die Datei des Dumps so ca. 50 MB groß wird (von der scharfen Datenbank).
(x mal mit phpmyadmin probiert, schmiert immer ab; ein 50 MB Dump ist doch nicht groß, oder liege ich hier völlig Falsch mit meiner Meinung ?!)

Ich habe evtl. den Fehler selber gefunden ! 8)

Der Dump, den ich erzeugt hatte von meiner Test-Datenbank mit dem mysqldump Befehl hat einen Dump erzeugt, den mysql nicht selber wireder einlesen konnte. Hört sich evtl. doof an, aber als ich die Leerstelles manuell mit einem Editor der Feldernamen rausgenommen habe, ginbg es auf einmal.

Auszug aus dem Original Dump :

CREATE TABLE cds (
CD Interpret varchar(100) NOT NULL default '',
CD Name varchar(100) NOT NULL default ''
) TYPE=MyISAM COMMENT='eine Test Datenbank';


wurde von mir geändert in

CREATE TABLE cds (
Interpret varchar(100) NOT NULL default '',
Name varchar(100) NOT NULL default ''
) TYPE=MyISAM COMMENT='eine Test Datenbank';


.... und schwups es geht ! Ist das nicht merkwürdig ?

Warum erstellt der mysqldump denn ein File, was er
selber nicht mehr einlesen kann oder liegt es darn, dass
ich unzulässige Namen für die Felder gewählt habe ?!

Habe nämlich als Feldname (siehe Dump) "CD Interpret"
angelegt gehabt (2 Wörter mit Space getrennt). Beim Anlegen
im phpmyadmin hat jedenfalls niemand gemeckert beim Anlegen).

Danke für eine Antowort.

Gibt es nicht eine bessere bzw. einfachere Methode eine MySQL Datenbank / Tabelle zu kopieren bzw. zu backupen ?!

Gruss Sascha
 
ldi schrieb:
Warum erstellt der mysqldump denn ein File, was er
selber nicht mehr einlesen kann oder liegt es darn, dass
ich unzulässige Namen für die Felder gewählt habe ?!

Habe nämlich als Feldname (siehe Dump) "CD Interpret"
angelegt gehabt (2 Wörter mit Space getrennt). Beim Anlegen
im phpmyadmin hat jedenfalls niemand gemeckert beim Anlegen).

Ich habe auch zwei Monate lang Backups erstellt, bis mir aufgefallen ist, dass ich diese gar nicht importieren kann.. :roll:

Das Problem ist eben genau dieses Leerzeichen, da der erste Teil als Feld-Name interpretiert wird und der zweite Teil als dessen Datentyp (statt das nachfolgende varchar(100)).

Zum Exportieren gibst du zusätzlich die Option --quote-names (oder -Q) an, damit die Tabellen und Datenbanknamen in einfachen Anführungszeichen abgespeichert werden (dies ist identisch mit der SQL-Export-Option "Tabellen- und Feldnamen in einfachen Anführungszeichen" von phpMyAdmin).

Code:
mysqldump -u user --p cds -Q > dump.sql

Den Import mache ich jeweils am mysql-Prompt mit
Code:
mysql> source dump.sql
 
Oben