2011-01-28 8 views
0

私はMySQLには新しく、すべてのテーブルの名前を大文字に変更するスクリプトがあります。私はそれに間違いがありますが、なぜ動作していないのか分かりません。どんな助けもありがとう!MySQLカーソルリネームテーブル、スクリプトエラー

DECLARE a VARCHAR(100); 
DECLARE done INT DEFAULT 0; 

DECLARE cur1 CURSOR FOR 
    SELECT DISTINCT table_name 
    FROM information_schema.columns 
    WHERE table_schema='admin27_shop'; 

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1; 

OPEN cur1; 

read_loop: LOOP 
    FETCH cur1 INTO a; 
    IF done THEN 
     LEAVE read_loop; 
    END IF; 

    CREATE TABLE CONCAT(a, '1') SELECT * FROM a; 
    DROP TABLE a; 
    RENAME TABLE CONCAT(a, '1') TO UPPER(a); 
END LOOP; 

CLOSE cur1; 

UPDATE:エラーメッセージは、変数の宣言では、1行目に起こる構文エラーがあると言う...

+2

SQLエラーメッセージを投稿した場合に役立ちます。 – Prisoner

+0

ALTERは成功の鍵です –

+0

私はこのスクリプトに関するいくつかの本当の懸念を持っています。書かれているように 'CREATE TABLE/DROP TABLE'はあなたの既存のインデックスのすべてを失うことになります。あなたのエラーは、依然として存在する子テーブルへの外部キー関係を持つ親テーブルを削除しようとしていることです。 –

答えて

0

は、MySQLとアプリケーションの私の特定のバージョンでなければなりません。この質問を閉じる。