+1 para esta pregunta porque hay muchos desarrolladores en el mundo de DB que les gusta catalogar procedimientos almacenados fuera de MySQL en el software de control de versiones que quisieran hacer esto (no soy fanático de hacerlo yo mismo)
RolandoMySQLDBA
En mi caso, este comando me dio un error mysqldump: Got error: 23: "Out of resources when opening file". Tenía la --single-transactionopción de resolver este error. Y si solo desea la rutina, puede agregar, -no-create-infopara evitar la instrucción de crear tabla.
bedomon
Respuestas:
34
Esto debería hacerlo por ti:
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.
ADVERTENCIA
Sería mucho mejor no separar los procedimientos almacenados de la base de datos para que se creen procedimientos almacenados específicos en la base de datos para la que fue diseñada. Lo mismo ocurre con los desencadenantes. Esto sería preferible:
Intenté esto y tuve que agregar la opción '-t' para no obtener las instrucciones de crear tabla.
Derek Downey
Olvidé eso, lástima que no pueda votar los comentarios. Actualicé el primer comando mysqldump para incluirlo. El segundo debe dejarse afuera para asociar cada disparador a su tabla base. Gracias de nuevo, @DTest !!!
RolandoMySQLDBA
No hay problema. En mi caso, solo quería funciones / procedimientos almacenados para una base de datos específica, y no disparadores. Así que funcionó bien
mysqldump: Got error: 23: "Out of resources when opening file"
. Tenía la--single-transaction
opción de resolver este error. Y si solo desea la rutina, puede agregar,-no-create-info
para evitar la instrucción de crear tabla.Respuestas:
Esto debería hacerlo por ti:
ADVERTENCIA
Sería mucho mejor no separar los procedimientos almacenados de la base de datos para que se creen procedimientos almacenados específicos en la base de datos para la que fue diseñada. Lo mismo ocurre con los desencadenantes. Esto sería preferible:
fuente