rruebner: Fehler beim Import des SQL-Dump

Ich bin am verzweifeln.

[Sätze, die man an einem Freitag-Abend nicht schreiben möchte].

Aktuell versuche ich, einen SQL-Dump von phpMyAdmin 3.3.7 in phpMyAdmin 4.5.1 zu importieren - als blutiger Anfänger. Bei Datenbanken auf dem gleichen Server hatte ich bisher nie Probleme, doch nun erhalte ich die Fehlermeldung:

SQL-Befehl:


CREATE TABLE IF NOT EXISTS `wp_aiowps_events` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`event_type` varchar(150) NOT NULL DEFAULT '',
`username` varchar(150) DEFAULT NULL,
`user_id` bigint(20) DEFAULT NULL,
`event_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`ip_or_host` varchar(100) DEFAULT NULL,
`referer_info` varchar(255) DEFAULT NULL,
`url` varchar(255) DEFAULT NULL,
`event_data` longtext,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1
MySQL meldet: Dokumentation

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'TYPE=MyISAM AUTO_INCREMENT=1' at line 12

Kann jemand von Euch etwas damit anfangen?

Vielen, vielen lieben Dank für Eure Hilfe! René

  1. Tach!

    Ich bin am verzweifeln.

    Ach, wärst du mal lieber am Handbuch-Lesen.

    Aktuell versuche ich, einen SQL-Dump von phpMyAdmin 3.3.7 in phpMyAdmin 4.5.1 zu importieren - als blutiger Anfänger.

    Die Version von phpMyAdmin ist irrelevant. Die Versionen der MySQL-Server (nicht die der Client-API) wäre wichtiger.

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'TYPE=MyISAM AUTO_INCREMENT=1' at line 12

    Im Handbuch der aktuellen Versionen findet sich keine Option TYPE, die den Engine-Typ angibt. Die heißt dort ENGINE. Ganz weit zurück in Version 5.0 findet sich dann ein ENGINE|TYPE. Das TYPE war also mal vor langer Zeit richtig.

    dedlfix.

    1. Ich bin am verzweifeln.

      Ach, wärst du mal lieber am Handbuch-Lesen.

      Chapeau! ;-)

      Hättest Du vielleicht eine Lösung für mich parat? Wenn die Syntax veraltet ist, sollte man dann vielleicht eine der Kompatibilität-Optionen beim Exportieren aus der alten Datenbank nutzen?

      Vielen Dank für Deine Hilfe dedlfix!

      1. Moin!

        Hättest Du vielleicht eine Lösung für mich parat? Wenn die Syntax veraltet ist, sollte man dann vielleicht eine der Kompatibilität-Optionen beim Exportieren aus der alten Datenbank nutzen?

        Eventuell hast Du genau das getan.

        Ich habe das für Dich mit dem phpMyAdmin 3.3.7 probiert:

        • Mit dem Kompatibiltätsmodus "None" : ENGINE=MyISAM - Das willst Du.
        • Mit dem Kompatibiltätsmodus "MySQL40" : TYPE=MyISAM - Das willst Du NICHT.

        Was hat Dich gehindert, das eben mal zu tun?

        Nachtrag: Wenn wir schon dabei sind: Warum MyISAM? Hat es dafür gute Gründe?

        Jörg Reinholz

        1. Danke für Deine Antwort: Das heißt, beim Ex- und Import sollte der Kompatibiltätsmodus stets auf NONE stehen? Aber das war er doch schon? Entschuldige bitte, aber leider verstehe ich Deine Anleitung noch nicht so genau :-(

      2. Tach!

        Hättest Du vielleicht eine Lösung für mich parat?

        TYPE durch ENGINE ersetzen geht in jedem Texteditor. MySQL updaten könnte auch helfen. Vorher (das) Daten(-Verzeichnis) sichern.

        dedlfix.

        1. Tach!

          Hättest Du vielleicht eine Lösung für mich parat?

          TYPE durch ENGINE ersetzen geht in jedem Texteditor. MySQL updaten könnte auch helfen. Vorher (das) Daten(-Verzeichnis) sichern.

          dedlfix.

          Ich habe den SQL-Dump nun ohne Kompatibilitätsmodus exportiert und auf dem neuen Server installiert. Das Ergebnis ist die Fehlermeldung:


          Fehler Statische Analyse:

          1 Fehler wurden während der Analyse gefunden.

          Unerkanntes Schlüsselwort. (near "ON" at position 25) SQL-Befehl: Bearbeiten Bearbeiten

          SET FOREIGN_KEY_CHECKS = ON;

          MySQL meldet: Dokumentation

          #2006 - MySQL server has gone away Neues phpMyAdmin-Fenster Warning in ./libraries/dbi/DBIMysqli.class.php#261 Error while sending QUERY packet. PID=29041

          Backtrace

          ./libraries/dbi/DBIMysqli.class.php#261: mysqli_query(
          object,
          string 'SELECT @@lc_messages;',
          integer 0,
          )
          ./libraries/DatabaseInterface.class.php#246: PMA_DBI_Mysqli->realQuery(
          string 'SELECT @@lc_messages;',
          object,
          integer 1,
          )
          ./libraries/DatabaseInterface.class.php#1941: PMA_DatabaseInterface->tryQuery(
          string 'SELECT @@lc_messages;',
          NULL,
          integer 1,
          boolean false,
          )
          ./libraries/DatabaseInterface.class.php#325: PMA_DatabaseInterface->fetchValue(string 'SELECT @@lc_messages;')
          ./libraries/Util.class.php#2970: PMA_DatabaseInterface->{closure}()
          ./libraries/DatabaseInterface.class.php#327: PMA_Util::cacheGet(
          string 'server_language',
          object,
          )
          ./libraries/DatabaseInterface.class.php#2507: PMA_DatabaseInterface->convertMessage(string 'Got a packet bigger than \'max_allowed_packet\' bytes')
          ./libraries/dbi/DBIMysqli.class.php#436: PMA_DatabaseInterface->formatError(
          integer 1153,
          string 'Got a packet bigger than \'max_allowed_packet\' bytes',
          )
          ./libraries/DatabaseInterface.class.php#2960: PMA_DBI_Mysqli->getError(object)
          ./libraries/import.lib.php#178: PMA_DatabaseInterface->getError()
          ./libraries/plugins/import/ImportSql.class.php#161: PMA_importRunQuery(
          string 'CREATE TABLE IF NOT EXISTS `wp_aiowps_login_activity` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` bigint(20) NOT NULL, `user_login` varchar(150) NOT NULL, `login_date` datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\', `logout_date` datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\', `login_ip` varchar(100) NOT NULL DEFAULT \'\', `login_country` varchar(150) NOT NULL DEFAULT \'\', `browser_type` varchar(150) NOT NULL DEFAULT \'\', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=13',
          string 'CREATE TABLE IF NOT EXISTS `wp_aiowps_login_activity` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` bigint(20) NOT NULL, `user_login` varchar(150) NOT NULL, `login_date` datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\', `logout_date` datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\', `login_ip` varchar(100) NOT NULL DEFAULT \'\', `login_country` varchar(150) NOT NULL DEFAULT \'\', `browser_type` varchar(150) NOT NULL DEFAULT \'\', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=13',
          boolean false,
          array,
          )
          ./import.php#641: ImportSql->doImport(array)
          

          [Jörg Reinhholz: editiert (in Quelltext umgewandelt) damit es überhaupt lesbar wird]

          Kann einer von Euch daraus etwas lesen?

          Danke für die Hilfe!!

          1. Tach!

            Ich habe den SQL-Dump nun ohne Kompatibilitätsmodus exportiert und auf dem neuen Server installiert. Das Ergebnis ist die Fehlermeldung:

            Unerkanntes Schlüsselwort. (near "ON" at position 25)

            SET FOREIGN_KEY_CHECKS = ON;

            Dann kannst du den Kompatibilitätsmodus also nicht nehmen, ohne dass er größeren Schaden anrichtet.

            #2006 - MySQL server has gone away
            string 'Got a packet bigger than 'max_allowed_packet' bytes',

            Da hat sich wohl der Zielserver verschluckt. Sind in deinen Daten Felder mit viel Inhalt? Dann kannst du mal folgendes umstellen: Es gibt da die Möglichkeit, das Aussehen des INSERT-Statements anzupassen. Nimm da mal die Einstellung für nur einen Datensatz pro INSERT.

            dedlfix.

          2. Moin!

            Wenn es keinen zwingenden Grund gibt, den Import über PMA zu machen, dann meide das. Übertrage den Dump auf den Server und führe dann via ssh folgendes aus:

            mysql -u USER -p DATENBANK < dump.sql

            Wenn der MySQL Server erreichbar ist, dann geht auch von "zu Hause" (oder vom anderen Server) aus

            mysql -h NEUER_HOST -u USER -p DATENBANK < dump.sql

            Die dritte Möglichkeit:

            Man kann die Verzeichnisse und Dateien mit MyISAM-Tabellen binär einfach auf den neuen Server verschieben. Danach die Rechte neu vergeben. Standardverzeichnis ist /var/lib/mysql.

            Für folgendes brauchst Du Root-Rechte:

            Im Zweifelsfall geht das Übertragen aller Datenbanken durch anhalten beider Server, dann Kopieren der Inhalte (Verzeichnisse und Dateien) von /var/lib/mysql. Jedenfalls so lange der Server der Quelle die ältere Version ist. Vor dem nachfolgendem Start des mysql-Servers führe mysqlrepair -Agr aus

            Jörg Reinholz