+1 para esta pergunta porque existem muitos desenvolvedores no mundo do banco de dados que gostam de catalogar procedimentos armazenados fora do MySQL em software de controle de versão que gostariam de fazer isso (eu não sou fã de fazer isso sozinho)
RolandoMySQLDBA
No meu caso, este comando me deu um erro mysqldump: Got error: 23: "Out of resources when opening file", tive a --single-transactionopção de resolver esse erro. E se você quiser apenas a rotina, poderá adicionar - -no-create-infopara evitar a instrução create table.
bedomon
Respostas:
34
Isso deve fazer isso por você:
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.
EMBARGO
Seria muito melhor não separar os procedimentos armazenados do banco de dados, para que procedimentos armazenados específicos sejam criados no banco de dados para o qual foram criados. O mesmo vale para gatilhos. Isso seria preferível:
Eu tentei isso e tive que adicionar a opção '-t' para não obter as instruções da tabela de criação.
Derek Downey
Esqueci esse, pena que não posso votar novamente. Atualizei o primeiro comando do mysqldump para incluí-lo. O segundo deve ser deixado de fora para associar todos os gatilhos à sua tabela base. Mais uma vez obrigado, @DTest !!!
RolandoMySQLDBA
Sem problemas. No meu caso, eu só queria funções / procedimentos armazenados para um banco de dados específico, e não gatilhos. Por isso funcionou bem
mysqldump: Got error: 23: "Out of resources when opening file"
, tive a--single-transaction
opção de resolver esse erro. E se você quiser apenas a rotina, poderá adicionar --no-create-info
para evitar a instrução create table.Respostas:
Isso deve fazer isso por você:
EMBARGO
Seria muito melhor não separar os procedimentos armazenados do banco de dados, para que procedimentos armazenados específicos sejam criados no banco de dados para o qual foram criados. O mesmo vale para gatilhos. Isso seria preferível:
fonte