2009-05-30 16 views
1

prepare文を使用してテーブルを作成しようとしていますが、構文エラーが発生しています。さて、もし私が同じ文を個別に実行しようとすると、うまく動作します。実行中にMysql Prepare文エラーが発生しました

ここに私の文だ -

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; 

誰もが、私はこの声明の中で行方不明です何を私に伝えることができますしてください? それは私に、この行にエラーを与えている:

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

実際に発生したエラーを表示できますか? –

答えて

3

http://dev.mysql.com/doc/refman/5.1/en/prepare.htmlあるべきと言う:

[製造可能文の]テキストが単一のSQL文ではなく、複数のステートメントを表している必要があります。

だから、まずあなたのDROP TABLE文を実行した後、別途CREATE TABLE文を準備して実行する必要があります。

0

あなたは連結で二つの文字列の間にコンマを欠落していませんか?

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

こんにちは!それでも私は同じエラーを与えています。 –

+0

あなたは\ nを挿入する特別な理由はありますか? –

+0

いいえその行だけを私が新しい行に入れたかった –

関連する問題