SQL-Dump nach MariaDB laden?

ruutaiokwu

Top Contributor
Hallo zusammen

Folgende Codes verursachen Fehler bei mir:

```
package main;

import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class MySQLImport {
public static void main(final String[] args) throws Exception {
if (args == null || args.length == 0) {
System.out.println("Please specify path");
System.exit(0);
} else {
if (args == null || args.length == 1) {
System.out.println("Please specify username");
System.exit(0);
} else {
if (args == null || args.length == 2) {
System.out.println("Please specify password");
System.exit(0);
} else {
if (args == null || args.length == 3) {
System.out.println("Please specify host");
System.exit(0);
} else {
if (args.length == 4) {
String path = args[0];
String username = args[1];
String password = args[2];
String host = args[3];
Connection connection = DriverManager.getConnection("jdbc:mariadb://" + host
+ ":3306/mysql?user=" + username + "&password=" + password);

try (BufferedReader br = new BufferedReader(new FileReader(path))) {
StringBuilder sb = new StringBuilder();
String line = br.readLine();

while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}

String everything = sb.toString();
Statement stmt = connection.createStatement();

// stmt.execute(everything);

stmt.executeQuery(everything);

stmt.close();
connection.close();
}
} else {
System.out.println("Too many arguments: " + args.length);
}
}
}
}
}
}
}
```


Ausgabe:

```
Exception in thread "main" java.sql.SQLSyntaxErrorException: (conn=24) 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 'DROP DATABASE IF EXISTS relay;

at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:238)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:171)
at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:243)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:332)
at org.mariadb.jdbc.MariaDbStatement.executeQuery(MariaDbStatement.java:506)
at main.MySQLImport.main(MySQLImport.java:50)
Caused by: java.sql.SQLException: 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 'DROP DATABASE IF EXISTS relay;
CREATE DATABASE IF NOT EXISTS relay' at line 2
Query is: SET SQL_NOTES = 0;
DROP DATABASE IF EXISTS relay;
CREATE DATABASE IF NOT EXISTS relay;

java thread: main
at org.mariadb.jdbc.internal.util.LogQueryTool.exceptionWithQuery(LogQueryTool.java:121)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:233)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:326)
... 2 more

```


SQL, welches ich versuche reinzuladen:

```
SET SQL_NOTES = 0;
DROP DATABASE IF EXISTS relay;
CREATE DATABASE IF NOT EXISTS relay;
```


...scheinbar ist es nicht fähig mit `SET SQL_NOTES = 0;` richtig umzugehen. Warum?

HeidiSQL kann das ja schliesslich auch (libmariadb), wo sollte also das Problem liegen?
 

ruutaiokwu

Top Contributor
Verstehe das nicht ganz, deine Aussage...

Fakt ist: Das gleiche SQL ist mit HeidiSQL ausführbar, mit JDBC aber nicht.

Und der ZIELSERVER ist der gleiche. JDBC scheint ein Problem mit mehreren SQL-Statement auf einmal zu haben, eher das scheint Stand der Dinge zu sein..
 

krgewb

Top Contributor
Bitte immer in Code-Tags posten
Java:
package main;

import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class MySQLImport {
    public static void main(final String[] args) throws Exception {
        if (args == null || args.length == 0) {
            System.out.println("Please specify path");
            System.exit(0);
        } else {
            if (args == null || args.length == 1) {
                System.out.println("Please specify username");
                System.exit(0);
            } else {
               if (args == null || args.length == 2) {
                   System.out.println("Please specify password");
                   System.exit(0);
              } else {
                  if (args == null || args.length == 3) {
                      System.out.println("Please specify host");
                      System.exit(0);
                  } else {
                       if (args.length == 4) {
                           String path = args[0];
                           String username = args[1];
                           String password = args[2];
                           String host = args[3];
                           Connection connection = DriverManager.getConnection("jdbc:mariadb://" + host + ":3306/mysql?user=" + username + "&password=" + password);

                           try (BufferedReader br = new BufferedReader(new FileReader(path))) {
                               StringBuilder sb = new StringBuilder();
                               String line = br.readLine();

                               while (line != null) {
                                   sb.append(line);
                                   sb.append(System.lineSeparator());
                                   line = br.readLine();
                               }

                              String everything = sb.toString();
                              Statement stmt = connection.createStatement();

                              // stmt.execute(everything);

                              stmt.executeQuery(everything);

                              stmt.close();
                              connection.close();
                            }
                        } else {
                            System.out.println("Too many arguments: " + args.length);
                        }
                    }
                }
            }
        }
    }
}

Ausgabe:

Java:
Exception in thread "main" java.sql.SQLSyntaxErrorException: (conn=24) 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 'DROP DATABASE IF EXISTS relay;

at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:238)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:171)
at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:243)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:332)
at org.mariadb.jdbc.MariaDbStatement.executeQuery(MariaDbStatement.java:506)
at main.MySQLImport.main(MySQLImport.java:50)
Caused by: java.sql.SQLException: 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 'DROP DATABASE IF EXISTS relay;
CREATE DATABASE IF NOT EXISTS relay' at line 2
Query is: SET SQL_NOTES = 0;
DROP DATABASE IF EXISTS relay;
CREATE DATABASE IF NOT EXISTS relay;

java thread: main
at org.mariadb.jdbc.internal.util.LogQueryTool.exceptionWithQuery(LogQueryTool.java:121)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:233)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:326)
... 2 more



SQL, welches er versucht reinzuladen:

SQL:
SET SQL_NOTES = 0;
DROP DATABASE IF EXISTS relay;
CREATE DATABASE IF NOT EXISTS relay;
 
K

kneitzel

Gast
Problem gelöst...
Da wäre es ja schön gewesen, wenn Du mitgeteilt hättest, was denn die Lösung war ...

Ich würde tippen: allowMultiQueries=true

Hintergrund: Die JDBC Treiber von mariadb und mysql erlauben pro Statement nur eine Query. Wenn man dieses Verhalten nicht will, dann kann im Connection String allowMultiQueries=true mitgegeben werden und schon kann man mehrere Queries in einem Statement absetzen.

Ansonsten findet man auf SO viele Ideen und Vorschläge. Man kann das natürlich Splitten in mehrere Statements und diese als Batch absetzen. Oder man baut eine Stored Procedure mit dem Inhalt und führt diesen dann aus.... Das ist so, was ich als Ideen vermuten würde...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P MySQL Java Programm als Dienst MySQL Dump zurück spielen Datenbankprogrammierung 4
O MySQL Xampp dump-import in Java Datenbankprogrammierung 9
O MySQL mit Java Sql-Dump bekommen Datenbankprogrammierung 6
A MySQL Dump Datenbankprogrammierung 10
C Java, Postgres und dump. Datenbankprogrammierung 2
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Z MySQL "Too many connections" auch nach schliessen der Connections. Datenbankprogrammierung 10
J Sql Anfrage nach einer Zeile beenden Datenbankprogrammierung 6
T JPA: Nach String statt Primärschlüssel suchen Datenbankprogrammierung 9
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
S MySQL JTable zeigt nach Datenbankabfrage eine Spalte zu viel an Datenbankprogrammierung 0
D MySQL Suche nach Max Value in einer Tabelle Datenbankprogrammierung 7
M SQLite Suche nach String Datenbankprogrammierung 4
G PostgreSQL Nach Monaten auf einmal ClassNotFound-Exception Datenbankprogrammierung 3
C MySQL JTable in JScrollPane nach insert aktualisieren Datenbankprogrammierung 3
J SQLite Datenverlust nach beenden des Programmes Datenbankprogrammierung 21
J Fehlende DatenbankView nach einbeziehen von JDBC Datenbankprogrammierung 3
B Leerzeichen nach Umlaut -> Sichtbar erst nach Query! Datenbankprogrammierung 6
D Zeit von SQL nach Java Datenbankprogrammierung 2
M DB-Zugriff funktioniert nach JAR-Erstellung nicht mehr Datenbankprogrammierung 3
AssELAss Oracle Suche nach Umlauten Ä und Ae ermöglichen Datenbankprogrammierung 11
G HSQLDB Inserts/Updates sind nach Neustart der Anwendung Datenbankprogrammierung 1
S MySQL Nach wiederholtem Update falsche Werte (im Speicher?) Datenbankprogrammierung 1
Z PDF nach Formate sortieren Datenbankprogrammierung 3
A Nach Export mysql Verbindung zur Datenbank nicht möglich, was tun? Datenbankprogrammierung 7
F Java SQL Syntax Error erst nach mehrmaligen Aufrufen Datenbankprogrammierung 3
R vor/nach INSERT mysql-SETS absetzen Datenbankprogrammierung 2
C Programm wird nach DB-Eintrag nicht weitergeführt Datenbankprogrammierung 5
E Abfrage nach existierender SQL-Tabelle Datenbankprogrammierung 7
P MySQL Verbindung nach außen sehr langsam Datenbankprogrammierung 4
S Nochmals: ID ermitteln nach Insert Datenbankprogrammierung 2
P JPA- Entities bleiben nach dem Löschen (unsichtbar?) in der Datenbank Datenbankprogrammierung 6
GianaSisters MS SQL unter Netbeans OK - nach konvertieren Absturz Datenbankprogrammierung 6
R SQL Abfrage, je nach ausgewählten Parametern Datenbankprogrammierung 11
I Zugriff auf Datenbank nach Erstellen einer Executable Jar Datei verweigert Datenbankprogrammierung 10
M Datenbankeintrag bleibt nach Löschen in JSP vorhanden Datenbankprogrammierung 8
0 Filtern nach mehreren Kriterien Datenbankprogrammierung 4
T filtern nach expliziten Worten trotz LIKE '%Wort%' Datenbankprogrammierung 2
E Nach Server wechsel Datenbank fehler ?!? Datenbankprogrammierung 3
F SQL ordnen nach zueinander in Verhältnis gesetzten Spaltenwerten Datenbankprogrammierung 11
J SQL: Sortierung nach Wortlänge Datenbankprogrammierung 2
Java.getSkill() Datensatz / Tupel automatisch nach xy Tagen / Stunden löschen Datenbankprogrammierung 7
T JPA: NullPointerException nach persist Datenbankprogrammierung 3
T Eintragung in einer Spalte nach Abfrage Datenbankprogrammierung 11
E Hibernate Session closed nach Transaction commit? Datenbankprogrammierung 7
K Rundungsfehler bei Gleitkommazahlen von Java nach SQL Datenbankprogrammierung 2
B Spaltennamen von MySQL Datenbank nach Java auslesen Datenbankprogrammierung 10
alexpetri Problem mit jdbc MS Access / nach 670 inserts ist schluss. Datenbankprogrammierung 4
tfa Apache DBCP: Reconnect nach Timeout? Datenbankprogrammierung 3
M mySQL zugriff funktionert nach ca4 stündiger laufzeit nicht Datenbankprogrammierung 6
G Hilfe: Werte sind alle x2 (oder mehr) nach JOIN Datenbankprogrammierung 13
M sql-code für suche in tabelle nach höchster transaktionsnr Datenbankprogrammierung 12
T ibatis + "generated p-key" nach insert? Datenbankprogrammierung 24
G Herausfinden des Primary Keys nach INSERT-Kommando? Datenbankprogrammierung 4
T Tabellen aus Datenbank 1 nach Datenbank 2 Datenbankprogrammierung 2
C Resultset nach connection close weiterreichen Datenbankprogrammierung 5
E JDBC, ForwardOnly bei ResultSet nach Uebergabe Datenbankprogrammierung 4
G Suchen nach Autowerten in Access-DB Datenbankprogrammierung 20
D JAVA hängt nach SQL Abfrage Datenbankprogrammierung 7
I Nach export zur .jar keine verbindung mehr Datenbankprogrammierung 7
M Datenbankverbindung bricht nach ca. 12 Stunden Verbindung ab Datenbankprogrammierung 3
R Nach String in MySQL datenbank suchen Datenbankprogrammierung 7
M Daten von MySQL nach MSSql probleme beim schreiben Datenbankprogrammierung 3
G File nach Blob konvertieren ? Datenbankprogrammierung 6
M Abfrage trennt Ergbnis eines Atrributes nach den Leerzeichen Datenbankprogrammierung 4
F Treiber nachladen oder nach Bedarf Datenbankprogrammierung 4
P Primärschlüssel direkt nach der Eingabe wieder auslesen Datenbankprogrammierung 7
R MySQL Syntax für suche nach Textteil Datenbankprogrammierung 8
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
C MySQL Remote Verbindung zu MariaDB Datenbankprogrammierung 11
ruutaiokwu MySQL MariaDB-Client-Zertifkate, nur für einen bestimmten User Datenbankprogrammierung 5
O Dokumentation für MariaDB 10.3. Datenbankprogrammierung 2
H MariaDB-Zugriff mittels Java SE Datenbankprogrammierung 3
ruutaiokwu MariaDB root Kennwort zurücksetzen, frische Debian Stretch 9.6.0-Installation!! Datenbankprogrammierung 0
D Installation von MariaDB in java und eclipse Datenbankprogrammierung 2
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11

Ähnliche Java Themen

Neue Themen


Oben