# Problem beim Importieren einer Datenbank



## MaximusMeridius (24. Jun 2009)

Moin,

ich lasse mit Java eine Datenbank erstellen -> Funktioniert.
Nun will ich, dass in dieser Datenbank mehrere Tabellen importiert werden. Mein Fehler bei der Sache ist, dass aus der SQL-Datei immer nur die erste Tabelle von meinem Programm richtig interpretiert wird(wobei es keine Rolle spielt welche Tabelle als erstes in der Datei steht), bei der 2. Tabelle wird sofort ein Fehler ausgegeben. Der SQL-Code an sich ist Fehlerfrei (wird von phpMyAdmin problemlos akzeptiert).

Als Beispiel 2 Tabellen aus meiner Datei:


```
CREATE TABLE `Appointment` (
  `id` int(11) NOT NULL auto_increment COMMENT 'Termin ID (Appointment ID)',
  `meetingId` int(11) NOT NULL COMMENT 'Zu welchem Meeting der Termin gehoert',
  `coordinationId` int(11) NOT NULL default '0' COMMENT 'besitzt das der Termin eine Terminfindung ansonsten 0',
  `date` date NOT NULL COMMENT 'Datum des Termins, falls Terminfindung aktiv, erstmal 0',
  `start` time NOT NULL COMMENT 'Startzeitpunkt des Termins',
  `end` time NOT NULL COMMENT 'Endzeitpunkt des Termins, falls Coordination gesetzt 0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `meetingId` (`meetingId`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

CREATE TABLE `BlueFile` (
  `id` int(11) NOT NULL auto_increment COMMENT 'ID fuer ProjektFiles',
  `projectId` int(11) NOT NULL COMMENT 'Id zu welchem Projekt die Datei gehoert',
  `meetingId` int(11) NOT NULL,
  `path` text NOT NULL COMMENT 'Pfadangabe',
  `title` varchar(80) NOT NULL,
  `description` text NOT NULL,
  `size` double NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;
```

und die Exception:


```
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 'CREATE TABLE `BlueFile` (
  `id` int(11) NOT NULL auto_increment COMMENT 'ID fue' at line 12
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.Util.getInstance(Util.java:381)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2046)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1964)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1949)
	at common.Main.startInstall(Main.java:228)
	at common.Main.access$0(Main.java:107)
	at common.Main$3.actionPerformed(Main.java:97)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
```


----------



## homer65 (24. Jun 2009)

Das sind ja auch zwei SQL Befehle. Wenn man diese aus Java heraus absetzt, sollte man dafür auch zwei Aufrufe mit je einem Befehl machen.


----------



## maki (24. Jun 2009)

Nebenbei gesagt...


> ENGINE=MyISAM


Das ist keine gute Wahl, wenn man Fremdschlüssel hat, denn MyISam unterstützt kein RI, genausowenig wie Transaktionen und viele andere Dinge die Relationale DBs so können.


----------



## MaximusMeridius (24. Jun 2009)

Moin,

danke für die Hilfe. Habe den Code gesplittet (Anhand des ";", da dieser ja das Ende eines Befehles signalisiert) und sende jeden Befehl einzelnt an die Datenbank.

Das funktioniert


----------

