Veröffentlicht 25. April 200817 j Das System: Alter Server: MySQL: 4.0.18-Max MySQL dump 9.10 Neuer Server: MySQL: 5.0.32 MySQL dump 10.11 ich hab eine Datenbank mit mysqldump ohne Fehler vom alten server exportiert: mysqldump DBx>DBx.sql -u root -p und will diese nun in den neuen Server importieren: mysql DBx<DBx.sql -u root -p es kommt zu folgendem Fehler ERROR 1064 (42000) at line 16570: You have an error in your SQL syntax; check the manual that corre sponds to your MySQL server version for the right syntax to use near 'loop tinyint(3) unsigned NOT NULL default '0', alternatepic blob NOT NULL, a' at line 13 ich hab mir DBx.sql angeschaut, hier ein Auszug ab Zeile 16570 CREATE TABLE tx_rlmpflashdetection_flashmovie ( uid int(11) unsigned NOT NULL auto_increment, pid int(11) unsigned NOT NULL default '0', tstamp int(11) unsigned NOT NULL default '0', crdate int(11) unsigned NOT NULL default '0', cruser_id int(11) unsigned NOT NULL default '0', description tinytext NOT NULL, requiresflashversion int(11) NOT NULL default '0', width int(11) NOT NULL default '0', height int(11) NOT NULL default '0', quality int(11) unsigned NOT NULL default '0', displaymenu tinyint(3) unsigned NOT NULL default '0', loop tinyint(3) unsigned NOT NULL default '0', alternatepic blob NOT NULL, alternatelink tinytext NOT NULL, flashmovie blob NOT NULL, additionalparams text NOT NULL, xmlfile blob NOT NULL, PRIMARY KEY (uid), KEY parent (pid) ) TYPE=MyISAM; Das Problem liegt also irgendwo hier displaymenu tinyint(3) unsigned NOT NULL default '0', loop tinyint(3) unsigned NOT NULL default '0', Woran liegt´s? wie soll ich den Eintrag editieren, damit er es akzeptiert?
25. April 200817 j Beim importieren kann man in phpmyadmin einen kompatibilitätsmodus auswählen. Docu MySQL :: MySQL 5.0 Reference Manual :: 5.1.6 SQL Modes MYSQL40 Equivalent to NO_FIELD_OPTIONS, HIGH_NOT_PRECEDENCE. klappt es damit?
25. April 200817 j Funktioniert leider auch nicht. (ich habs mit phpmyadmin mit dem kompatibilitätsmodus MYSQL40 versucht) gleiche Fehlermeldung
27. April 200817 j LOOP ist soweit ich weiss in MySQL 5 ein reserviertes wort. versuchs mal testweise im script, diese und ähnliche feldnamen auszutauschen und importier dann nochmals. die verwendung von MyISAM und InnoDB wird auf linuxoiden OS' unterschiedlich gehandhabt und ab version 5 durch ENGINE zusätzlich zu TYPE unterstützt. auch das kannst du testen. s'Amstel
27. April 200817 j sowas hab ich schon vermutet, weil er die anderen zeilen alle perfekt annimmt (obwohl diese gleich aufgebaut sind). Dieses Problem tritt erst praktisch am Schluss der ganzen .sql- Datei auf. Ich brauche also nur die eine Zeile per Hand zu ändern. Es gibt doch einen Weg/Trick, wie man auch sql- Anweisungen als Spaltennamen verwenden kann. Ich konnte es allerdings bis jetzt nirgends finden wie man´s macht.
27. April 200817 j man kann diese feldnamen in (einfache) hochkommas setzen. schöner ist es allerdings, wenn auch durch versionssprünge nicht immer realistisch und praktikabel, solche probleme gleich durch umbenennung zu umgehen. s'Amstel
27. April 200817 j ich habs versucht, da kommt trotzdem immer der gleiche fehler... folgende Möglichkeiten bin ich durchgegangen: "loop" tinyint(3) unsigned NOT NULL default '0', 'loop' tinyint(3) unsigned NOT NULL default '0', ich hab loop mal testweise durch einen anderen Namen ersetzt: lilula tinyint(3) unsigned NOT NULL default '0', und es klappte prima. Allerdings ist das natürlich nur zu testzwecken... die Anwendung braucht ja den originalen Spaltennamen.
28. April 200817 j Da es in dem über 16 000 Zeilen langen .sql Export nur diesen einen Fehler gab, hab ich den Spaltennamen vor dem Importieren einfach umbenannt. Nach dem Import konnte ich den Namen wieder ohne Probleme (was mich etwas verwundert hat) in phpMyAdmin zurückstellen. Falls ich noch eine andere Lösung finden sollte, so werde ich diese hier reinschreiben. Vielen dank, vor allem Amstelchen :uli
30. April 200817 j In mysql werden Spalten, die mit sclüsselwörtern identisch sind meines Wissends nach in Backticks gestellt: Also `loop` Besser ist es natürlich erst gar keine Schlüsselwörter als Spaltenname zu verwenden. Mach auch das Schreiben von SQL viel einfacher. Dim
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.