Вопрос: Как я могу экспортировать содержимое базы данных (включая триггеры) из моей системы dev и импортировать данные на живой сервер без ошибок в работе 1449 при срабатывании триггера ?Использование триггеров с разными пользователями (ошибка MySQL 1449)
В недавнем проекте php я широко использую триггеры mysql, но столкнулся с проблемой при развертывании моей базы данных из dev в live system.
E.g. один из моих триггеров определяются следующим образом (вывод, сгенерированный с помощью mysqldump
)
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER update_template BEFORE UPDATE ON template
FOR EACH ROW BEGIN
SET new.mod_date := now();
END */;;
DELIMITER ;
Этого триггер был определен в моей системе Dev с помощью пользователя корневых @
локальных, который создает пункт в заявлении выше [email protected]
.
корень @ локальный не существует, как пользователь на реальном сервере, который вызывает следующую ошибку, когда все триггер сработал (например, с помощью update templates set...
) пользователем живых систем
1449: определен как DEFINER («корень» @ «локальный») пользователь не существует
в настоящее время я использую mysqldump --add-drop-table --user=root -p my_project > export.sql
для экспорта и mysql -u devuser -p my_project < export.sql
для импорта данных.
Экспортно-импортные работы безупречны. Ошибка возникает только в случаях, когда я манипулирую данными через sql и включается триггер.
Edit:
MySQL версии 5.5.47 (жить и DEV)
Какие версии MySQL используют ?. Вы можете использовать ['--skip-definer'] (http://dev.mysql.com/doc/refman/5.7/en/mysqlpump.html#option_mysqlpump_skip-definer) с версии 5.7.8 MySQL. – wchiquito
Спасибо за подсказку, к сожалению, не вариант для меня, но добавили его в http://stackoverflow.com/questions/9446783/remove-definer-clause-from-mysql-dumps/ – maxhb