JDBC - MySQL CREATE IF NOT EXISTS

Julius

Mitglied
Hi,

ich möchte die Tabellen einer Datenbank einmalig erstellen lassen.
Habe dafür SQL Querys mit "CREATE TABLE IF NOT EXISTS" geschrieben.
Klappt beim ersten Mal starten ganz gut.

Bei weiteren Anläufen, also wenn die Tabellen schon vorhanden sind, bekomme ich folgende Exception:
Code:
java.sql.SQLException: Can't create table

Greift das "if not exists" nicht oder woran liegt das?


Grüße
 

Julius

Mitglied
Es handelt sich um MySQL.

Java:
	  private void tabellenErstellen()
	  {
		  String t_bestandsveraenderung = 		"CREATE TABLE IF NOT EXISTS `bestandsveraenderung` (" +
		  										"  `id` int(11) NOT NULL AUTO_INCREMENT," +
		  										"  `zl_id` int(11) DEFAULT NULL," +
		  										"  `p_id` int(11) DEFAULT NULL," +
		  										"  `abgang` int(11) NOT NULL," +
		  										"  `zugang` int(11) NOT NULL," +
		  										"  PRIMARY KEY (`id`)," +
		  										"  KEY `zl_id` (`zl_id`)," +
		  										"  KEY `p_id` (`p_id`)" +
		  										") ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=1 ;";

		  try
		  {
			  Statement stmt = conn.createStatement();
                          stmt.executeUpdate(t_bestandsveraenderung);
			  stmt.close();
		  }
		  catch (SQLException e)
		  {
			  e.printStackTrace();			  
		  }
	  }
 

vfl_freak

Premium-User
Moin,

bin jetzt zwar kein ausgewiesener MySQL-Experte, aber es sieht für mich so erstmal nicht falsch aus!

Das Einzige, was mich ein wenig irritiert, ist der Aufruf "executeUpdate" ... ist das denn so korrekt?

Gruß
Klaus
 

slowfly

Erfahrenes Mitglied
Mach mal nen syso des Statements und führ's im entsprechenden MySQL-Tool aus. Einfach um auszuschliessen, dass das SQL auch wirklich so funktioniert.

Gruss
slowy
 

Julius

Mitglied
Die Datenbank hatte ich vorher schon mal angelegt gehabt und die Statements aus einem SQL-Dump einfach kopiert.
Die sollten demnach richtig sein.
 

slowfly

Erfahrenes Mitglied
Nach meiner langjährigen Erfahrung in der Entwicklung (kicher), impliziert "etwas sollte gehen" eigentlich immer, dass es nicht geht, bis es jemand ausprobiert ;)

Gruss
slowy
 

hehe_me

Mitglied
Hi Julius,

es liegt wie du schon vermutet hast am Zeichen ` diese müsstest du z.b. durch ' ersetzen,
da ` kein erlaubtes Zeichen ist in Java, PHP, etc.

Besten Gruß