コマンドラインまたはMySql Workbenchエディタでストアド・プロシージャを作成しようとしています。MySql:プロシージャ・エラーを作成する
Mysql WOrkbenchでは、メッセージは一切表示されませんが、エラーは発生しませんが、プロシージャは作成されません。コマンドラインmysql --host=localhost ... < procedure-script.sql
で、私は次のエラーを取得する:
ERROR 1064 (42000) at line 4: 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 'DELIMITER' at line 28
ライン28は実際には空であるが、私はそれはここでライン31の最後のDELIMITER ;
を指し推測完全なコードは次のとおりです。
DELIMITER $$;
-- drop procedure if exists updPages$$
CREATE PROCEDURE updPages()
BEGIN
DECLARE _post_id INTEGER;
DECLARE cur_pages CURSOR FOR
select ID
from wp_posts
where post_type='page' and ID not in (select post_id from wp_postmeta);
OPEN cur_pages;
Reading_Pages: LOOP
FETCH cur_pages INTO _post_id;
IF done THEN
LEAVE Reading_Pages;
END IF;
insert into wp_postmeta(post_id, meta_key, meta_value)
values (_post_id, '_wp_page_template', 'default'),
(_post_id, 'upside-show-page-title', '1'),
(_post_id, 'upside-show-breadcrumb', '1'),
(_post_id, 'upside-page-show-document-search', '0'),
(_post_id, 'upside-show-page-title-middle', 'false'),
(_post_id, '_vc_post_settings', 'a:1:{s:10:"vc_grid_id";a:0:{}}');
END LOOP;
CLOSE cur_pages;
END$$
DELIMITER ;
(1 )何かエラーはありますか? (2)Mysql Workbenchでコンパイルエラーを表示する方法を知っていますか?また、(3)コマンドラインからスクリプトを実行するときに、スクリプト内でタブを使用することはできますか?
削除セミコロン区切りのセミコロンを削除することによって、これを試してみてください(私はエラーを持っていたとして、それらを取り除く必要がありました)。 – rocks