Pergunta

Eu preciso copiar um banco de dados MySQL de um servidor em Linux para um servidor no Windows. Eu tentei usar mysqldump, mas isso não parece incluir procedimentos armazenados. Eu quero copiar tudo, ou seja, de esquema, dados, procedimentos armazenados, gatilhos, etc.

Obrigado, Don

Foi útil?

Solução

Você quer o " --routines "opção de mysqldump .

A partir da documentação para o sinalizador de --routines:

Dump armazenados rotinas (procedimentos e funções) a partir das bases de dados de dumping. O uso desta opção exige o SELECT privilégio para a tabela de mysql.proc. A saída gerada usando --routines contém CREATE PROCEDURE e CREATE FUNCTION para recriar as rotinas. No entanto, estes declarações não incluem atributos tais como a criação de rotina e marcas de tempo modificação. Isso significa que quando as rotinas são recarregados, eles vão ser criados com o timestamps igual ao tempo de recarga.

Se você precisar de rotinas para ser recriada com seus originais atributos timestamp, não use --routines. Em vez disso, despejar e recarregar o conteúdo da tabela de mysql.proc diretamente, usando uma conta MySQL que tem privilégios apropriados para o banco de dados mysql.

Esta opção foi adicionada no MySQL 5.1.2. Antes disso, rotinas armazenadas não são despejado. valores definidor da rotina não são despejado até MySQL 5.1.8. Isso significa que antes de 5.1.8, quando rotinas são recarregado, que será criado com o definidor definido para o usuário recarregar. Se você precisar de rotinas para ser recriada com seus originais definidor, despejo e carregar o conteúdo de tabela a mysql.proc directamente quanto descrito anteriormente.

Outras dicas

mysqldump -u root -p --routines --databases io \
| sed -e "s/;;/\$\$/g" \
> io.sql

Tente despejo. e comando de importação para:

mysql -u root -p --fource --databases io < io.sql 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top