2009-05-30 15 views
1

Ich versuche, eine Tabelle zu erstellen obwohl Vorbereitung, aber es gibt mir Syntaxfehler. Nun, wenn ich versuche, die gleiche Anweisung einzeln auszuführen, dann funktioniert es gut.Mysql Prepare Statement-Fehler bei der Ausführung

Hier ist meine Aussage -

SET @Stmt1 = Concat('DROP TABLE IF EXISTS ',DB,'.`county`;\n' 
'CREATE TABLE IF NOT EXISTS ',DB,'.`County` 
(
    `CountyID` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    `CountyName` VARCHAR(45) NOT NULL, 
    `CountyCode` VARCHAR(30) NOT NULL, 
    PRIMARY KEY (`CountyID`) 
)'); 

Prepare stmt2 From @stmt1; 
Execute stmt2; 

Bitte kann mir jemand sagen, was soll ich in dieser Aussage fehlt? Es gibt mir einen Fehler auf dieser Linie:

'CREATE TABLE IF NOT EXISTS ',DB,'.`County` 
(
    `CountyID` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
+0

Können Sie uns den tatsächlichen Fehler zeigen, den Sie bekommen? –

Antwort

3

http://dev.mysql.com/doc/refman/5.1/en/prepare.html sagt sein:

Der Text [der herstellbaren Anweisung] eine einzelne SQL-Anweisung, nicht mehr Anweisungen repräsentieren.

So werden Sie zuerst Ihre DROP TABLE Anweisung ausführen müssen, und dann vorbereiten und die CREATE TABLE Anweisung separat auszuführen.

0

sind Sie nicht ein Komma zwischen den beiden Zeichenfolgen in der concat fehlt?

sollte

SET @Stmt1 = Concat('DROP TABLE IF EXISTS ',DB,'.county;\n', 'CREATE TABLE IF NOT EXISTS ',DB,'.County (CountyID INT UNSIGNED NOT NULL AUTO_INCREMENT, CountyName VARCHAR(45) NOT NULL, CountyCode VARCHAR(30) NOT NULL, PRIMARY KEY (CountyID))'); 
+0

Hallo! Es gibt mir immer noch denselben Fehler. –

+0

Gibt es einen bestimmten Grund, warum Sie ein \ n einfügen? –

+0

nein, nur dass ich wollte sie auf der neuen Zeile –

Verwandte Themen