+1 untuk pertanyaan ini karena ada banyak pengembang di dunia DB yang suka membuat katalog prosedur tersimpan di luar MySQL dalam perangkat lunak kontrol versi yang ingin melakukan ini (saya sendiri bukan penggemar melakukannya)
RolandoMySQLDBA
Dalam kasus saya, perintah ini memberi saya kesalahan. mysqldump: Got error: 23: "Out of resources when opening file"Saya memiliki --single-transactionopsi untuk menyelesaikan kesalahan ini. Dan jika Anda hanya ingin rutin, Anda dapat menambahkan - -no-create-infountuk menghindari pernyataan membuat tabel.
bedomon
Jawaban:
34
Ini harus dilakukan untuk Anda:
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
Akan jauh lebih baik untuk tidak memisahkan prosedur yang tersimpan dari database sehingga prosedur tersimpan yang spesifik akan dibuat dalam database yang dimaksudkan untuk itu. Hal yang sama berlaku untuk pemicu. Ini lebih disukai:
Saya mencoba ini dan harus menambahkan opsi '-t' untuk tidak mendapatkan pernyataan tabel create.
Derek Downey
Lupa yang itu, sayang sekali saya tidak bisa mengungguli komentar. Saya memperbarui perintah mysqldump pertama untuk memasukkannya. Yang kedua harus ditinggalkan untuk mengasosiasikan setiap pemicu ke tabel dasarnya. Terima kasih lagi, @Dest !!!
RolandoMySQLDBA
Tidak masalah. Dalam kasus saya, saya hanya ingin fungsi / prosedur tersimpan untuk database tertentu, dan bukan pemicu. Jadi itu bekerja dengan baik
mysqldump: Got error: 23: "Out of resources when opening file"
Saya memiliki--single-transaction
opsi untuk menyelesaikan kesalahan ini. Dan jika Anda hanya ingin rutin, Anda dapat menambahkan --no-create-info
untuk menghindari pernyataan membuat tabel.Jawaban:
Ini harus dilakukan untuk Anda:
CAVEAT
Akan jauh lebih baik untuk tidak memisahkan prosedur yang tersimpan dari database sehingga prosedur tersimpan yang spesifik akan dibuat dalam database yang dimaksudkan untuk itu. Hal yang sama berlaku untuk pemicu. Ini lebih disukai:
sumber