mysqldumpбудет резервное копирование по умолчанию всех триггеров , но NOT в хранимых процедурах / функциях . Есть 2 параметра mysqldump, которые управляют этим поведением:
--routines - ЛОЖЬ по умолчанию
--triggers - ИСТИНА по умолчанию
поэтому в mysqldumpкоманде добавьте что-то --routinesвроде:
у меня MySQL "5.1.48-community", я запускаю "mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt> dumpfile.sql;" но он выдает ошибку, и ошибка "ОШИБКА 1064 (42000): у вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL, чтобы найти правильный синтаксис рядом с 'mysql dump --routines --no -create-info --no-data --no-create-db --skip-opt> dum 'в строке 1 ". Как это решить? -
Югал
добавьте в команду "-p -username dbname", и вам не понадобится ";" подпишитесь в конце
Хаим Евги
1
Также имейте в виду, что вы должны запускать mysqldump в приглашении оболочки, а не в клиенте командной строки MySQL, в phpMyAdmin или другом инструменте запросов.
Билл Карвин,
@HaimEvgi, почему -routinesвместо --routines?
Pacerier
--routinesОднако работает только в том случае, если у пользователя есть достаточные права доступа к mysql.procтаблице. GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
Rocki
20
Возможно, это очевидно для опытных пользователей MYSQL, но я потратил некоторое время, пытаясь выяснить, значение по умолчанию не будет экспортировать функции. Поэтому я подумал упомянуть здесь, что для параметра --routines необходимо установить значение true, чтобы он работал.
Вам не нужно использовать --routines = true. По умолчанию Sprocs НЕ сбрасываются. Вам просто нужно включить --routines в соответствии с примером в принятом ответе.
gview
6
Я создал следующий сценарий, и он отлично сработал.
Ответы:
mysqldump
будет резервное копирование по умолчанию всех триггеров , но NOT в хранимых процедурах / функциях . Есть 2 параметра mysqldump, которые управляют этим поведением:--routines
- ЛОЖЬ по умолчанию--triggers
- ИСТИНА по умолчаниюпоэтому в
mysqldump
команде добавьте что-то--routines
вроде:См. Документацию MySQL об аргументах mysqldump .
источник
-routines
вместо--routines
?--routines
Однако работает только в том случае, если у пользователя есть достаточные права доступа кmysql.proc
таблице.GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
Возможно, это очевидно для опытных пользователей MYSQL, но я потратил некоторое время, пытаясь выяснить, значение по умолчанию не будет экспортировать функции. Поэтому я подумал упомянуть здесь, что для параметра --routines необходимо установить значение true, чтобы он работал.
источник
Я создал следующий сценарий, и он отлично сработал.
#! /bin/sh cd $(dirname $0) DB=$1 DBUSER=$2 DBPASSWD=$3 FILE=$DB-$(date +%F).sql mysqldump --routines "--user=${DBUSER}" --password=$DBPASSWD $DB > $PWD/$FILE gzip $FILE echo Created $PWD/$FILE*
и вы вызываете сценарий, используя аргументы командной строки.
источник