Я создаю скрипт настройки базы данных, который создает и настраивает базу данных на лету. Пользователь mysql, который я использую, имеет полный превалинг для создания хранимой процедуры. Мой сервер базы данных отличается от моего сервера приложений.Создать хранимую процедуру с PHP
Я могу создать пользователя, затем базу данных, затем выбрать базу данных, затем создать таблицы, затем вставить некоторые данные в таблицы, затем создать представления и т. Д. Но наконец, когда я создаю хранимые процедуры, я сталкиваюсь с проблемами.
После SQL, чтобы создать процедуру
CREATE DEFINER=`newuser`@`192.168.0.10` PROCEDURE `AppCounts_Stagewise_Monthly_Weekly` (IN FILTERTYPE INTEGER)
BEGIN
IF(FILTERTYPE = 0) THEN
SELECT base_user_id, stage, COUNT(vw_application.id) AS app_counts, WEEK(DATE) AS `week`, YEAR(DATE) AS `year`
FROM vw_application
WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= DATE(DATE)
AND DATE(DATE) <= CURDATE() GROUP BY vw_application.stage, base_user_id;
ELSE
SELECT base_user_id, stage, COUNT(vw_application.id) AS app_counts, MONTH(DATE) AS `month`, YEAR(DATE) AS `year`
FROM vw_application
WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= DATE(DATE) AND DATE(DATE) <= CURDATE() GROUP BY vw_application.stage, base_user_id;
END IF;
END;
В create procedure
сек SQLs как выше отделены друг от друга специальным разделителем и поместить в файл. Я открываю файл и взорву каждый сценарий создания разделителем, чтобы получить каждый оператор create в массиве и выполнить их с помощью адаптера zend db.
$data = file_get_contents($this->_specimenDbFiles['ROUTINES']);
$data = explode('--', $data);
foreach($data as $key => $value) {
$clientDbAdaptor->query($value);
}
И проблема в том, что проблема? Если файл является чистым SQL, почему бы просто не использовать инструмент командной строки? –
В чем вы сомневаетесь? С какими проблемами вы столкнулись? – hakre
мой сервер базы данных отличается, проблема в том, что каждый раз я получаю следующую ошибку. Неустранимая ошибка: исключение исключения «PDOException» с сообщением «SQLSTATE [HY000]: общая ошибка: 1548 Не удается загрузить из mysql.proc. Возможно, таблица повреждена " –