+1 pour cette question car il y a beaucoup de développeurs dans le monde DB qui aiment cataloguer des procédures stockées en dehors de MySQL dans un logiciel de contrôle de version qui aimeraient le faire (je ne suis pas fan de le faire moi-même)
RolandoMySQLDBA
Dans mon cas, cette commande m'a donné une erreur, mysqldump: Got error: 23: "Out of resources when opening file"j'ai eu la --single-transactionpossibilité de résoudre cette erreur. Et si vous ne voulez que la routine, vous pouvez ajouter - -no-create-infopour éviter l'instruction create table.
bedomon
Réponses:
34
Cela devrait le faire pour vous:
mysqldump -h...-u...-p...-n -d -t --routines --triggers --all-databases > MySQLStoredProc.sql-n,--no-create-db Suppress the CREATE DATABASE ... IF EXISTS statement
that normally is output for each dumped databaseif--all-databases or --databases is given.-d,--no-data No row information.--triggers Dump triggers for each dumped table.(Defaults toon;use--skip-triggers to disable.)-R,--routines Dump stored routines (functions and procedures).-t,--no-create-info Do not write CREATE TABLE statements that create each
dumped table.
CAVEAT
Il serait préférable de ne pas séparer les procédures stockées de la base de données afin que des procédures stockées spécifiques soient créées dans la base de données à laquelle elles étaient destinées. Il en va de même pour les déclencheurs. Ce serait préférable:
J'ai essayé cela et j'ai dû ajouter l'option '-t' pour ne pas obtenir les instructions create table.
Derek Downey
J'ai oublié celui-là, dommage que je ne puisse pas voter sur les commentaires. J'ai mis à jour la première commande mysqldump pour l'inclure. Le second doit être laissé de côté pour associer chaque déclencheur à sa table de base. Merci encore, @DTest !!!
RolandoMySQLDBA
Aucun problème. Dans mon cas, je voulais juste des fonctions / procédures stockées pour une base de données spécifique, et non des déclencheurs. Donc ça a bien fonctionné
mysqldump: Got error: 23: "Out of resources when opening file"
j'ai eu la--single-transaction
possibilité de résoudre cette erreur. Et si vous ne voulez que la routine, vous pouvez ajouter --no-create-info
pour éviter l'instruction create table.Réponses:
Cela devrait le faire pour vous:
CAVEAT
Il serait préférable de ne pas séparer les procédures stockées de la base de données afin que des procédures stockées spécifiques soient créées dans la base de données à laquelle elles étaient destinées. Il en va de même pour les déclencheurs. Ce serait préférable:
la source