[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка хранимых процедур
CaXaP
Всем доброго дня.

Написал кучу хранимых процедур и теперь пытаюсь перенести их на хост.
Процедуры такого вида:

DROP PROCEDURE IF EXISTS `updateTeacher`;

DELIMITER $$

/*!50003 SET @TEMP_SQL_MODE=@@SQL_MODE, SQL_MODE='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER' */ $$
CREATE PROCEDURE `updateTeacher`(IN i_name VARCHAR(255), IN i_position VARCHAR(255), IN i_id INT)
BEGIN
UPDATE users SET `name`=i_name, `position`=i_position WHERE `id`=i_id;
END $$

Mysql Administrator их хорошо грузит (это им сделанный бэкап).
А вот phpmyadmin ругается и не хочет их грузить.
Разного рода ухищрения тоже не помогают (например, загнать процедуру в пхп и запустить с помощью mysql_query).

Если кто то занимался загрузкой хранимых процедур на хост, подскажите, пожалуйста, как Вы это делали... Мб дамп надо чем-нибудь другим загружать?



Спустя 21 минута, 3 секунды (11.05.2009 - 13:44) vasa_c написал(а):
Как ругается? Нах, нах, говорит?
Или описывает ошибку?

Спустя 34 минуты, 50 секунд (11.05.2009 - 14:19) CaXaP написал(а):
SQL
Ошибка

SQL-запрос:

CREATE PROCEDURE `updateTeacher` ( IN i_name VARCHAR( 255 ) , IN i_position VARCHAR( 255 ) , IN i_id INT ) BEGIN UPDATE users SET `name` = i_name,
`position` = i_position WHERE `id` = i_id;

END $$

Ответ MySQL:
#1064 - 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 '$$' at line 4

Это, очевидно, из за непонимания phpmyadmin DELIMETERа.
Убрал их, получил такой запрос:

SQL
DROP PROCEDURE IF EXISTS `updateTeacher`;

CREATE PROCEDURE `updateTeacher`(IN i_name VARCHAR(255), IN i_position VARCHAR(255), IN i_id INT)
BEGIN UPDATE users SET `name`=i_name, `position`=i_position WHERE `id`=i_id;
END


На нём вылетает лаконичное:
SQL
Ошибка

SQL-запрос:

CREATE PROCEDURE `updateTeacher` ( IN i_name VARCHAR( 255 ) , IN i_position VARCHAR( 255 ) , IN i_id INT ) BEGIN UPDATE users SET `name` = i_name,
`position` = i_position WHERE `id` = i_id;


Ответ MySQL:
#1064 - 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 '' at line 3

Спустя 21 минута, 18 секунд (11.05.2009 - 14:40) vasa_c написал(а):
phpmyadmin видимо разбивает по ";" дамп на отдельные запросы, а у вас ";" внутри процедуры.
В форме где выполняется дамп, есть поле "Разделитель". Если заменить там точку с запятой на другое что-нибудь, последний запрос выполняется.

Спустя 2 минуты, 40 секунд (11.05.2009 - 14:43) CaXaP написал(а):
Методом тыка подобрал хост БД моего хостера и смог зайти туда через Mysql Administrator.
Им дамп успешно был загружен без ошибок.

Так что проблема решена, извините за беспокойство smile.gif

И, если у кого то ещё не будет получаться загружать хранимые процедуры через phpmyadmin, попробуйте mysql administrator - с фичами mysql 5.0 (в частности хранимки) он работает куда лучше...

2vasa_c
Спасибо, попробую. Всё же уметь грузить хранимки через phpmyadmin тоже надо уметь - не всегда получается удалённо к БД подключиться...





_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.