2011-12-14 3 views
3

Я использую следующий SQL:DELIMITER в MySql

DELIMITER $$ 

DROP PROCEDURE IF EXISTS `get_auto_increment_settings`$$ 

CREATE PROCEDURE `get_auto_increment_settings`() 
BEGIN 
    select @@global.auto_increment_offset as 'offset', @@global.auto_increment_increment as 'increment' ; 

END $$ 
DELIMITER ; 

Я сохранён в db_auto_increment_settings_procedure.sql и когда я пытаюсь выполнить это от муравей, я столкнулся следующее сообщение об ошибке:

[sql] Executing resource: /mysql/install/db_auto_increment_settings_procedure.sql 
[sql] Failed to execute: DELIMITER 
[sql] com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: 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 1 
[sql] Failed to execute: DELIMITER ; 
[sql] com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: 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 1 
+0

Ваш сценарий действителен SQL - эта проблема будет иметь отношение к тому, что вы используете для ее интерпретации, я бы предположил, потому что '' 'является каким-то особым символом. – pgl

+0

Я попытался использовать «//», и проблема повторяется. – Daemonthread

+0

Что вы используете для интерпретации SQL? Разве «//» обычно не используется в качестве маркера для комментариев? – pgl

ответ

6

Разделитель используется только клиентом mysql (а не API, драйвером ... и т. Д.).
Таким образом, это не сработает.

ваше сообщение об ошибке: -

[sql] Executing resource: /mysql/install/db_auto_increment_settings_procedure.sql 
[sql] Failed to execute: DELIMITER 

Довольно уверен, что это будет работать в системе Linux

mysql -u root -pxxx -h yyy < YOUR_SQL.sql 

В случае необходимости, вы просто вручную создать хранимую процедуру с помощью MySQL клиента,
и без пота.

Если вам нужно создать это динамически,
этот документ может предоставить некоторую информацию проницательность
http://dev.mysql.com/doc/refman/5.0/en/connector-j-usagenotes-basic.html

+0

Я использовал exec mysql: Теперь он работает. Благодарю. – Daemonthread

1

Ваша процедура одна команда, поэтому разделители не нужны -

DROP PROCEDURE IF EXISTS `get_auto_increment_settings`; 

CREATE PROCEDURE `get_auto_increment_settings`() 
SELECT @@global.auto_increment_offset AS 'offset', @@global.auto_increment_increment AS 'increment';