Я написал PHP-скрипт миграции базы данных, который зацикливает список файлов SQL и выполняет их содержимое. Это должно помочь автоматизировать настройку и обновления проекта. Теперь я получаю такие ошибки:
mapCoursesToSport.sql: 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 |
DROP PROCEDURE IF EXISTS mapCoursesToSport|
CREATE PROCEDURE mapCo' at line 1
Я получал ту же ошибку, когда передавал скрипту файл с определением представления, который также использовал DELIMITER
s. Затем я нашел способ просто удалить разделители из файла SQL. И это сработало. Но сейчас это не вариант, поскольку хранимые процедуры действительно нуждаются в определениях разделителей.
Итак, как я могу определить хранимые процедуры MySQL из PHP? (Или, может быть, еще больше: как это SDELIMITER
быть обработано?)
mysql(i)_query
вместо использования запятых. - person bwoebi   schedule 22.04.2013DELIMITER
s. Моя ошибка заключалась в том, что я закомментировал не только определенные строки разделителей (DELIMITER $$
), но также строку сEND$$
и, кроме того, забыл заменить разделитель$$
в первой строке (DROP PROCEDURE IF EXISTS mapCoursesToSport$$
) точкой с запятой. Рабочая версия выглядит так:DROP PROCEDURE IF EXISTS mapCoursesToSport; ... END
, так что очень похоже на код в комментарии, который вы связали ... :) Спасибо! - person automatix   schedule 23.04.2013