Apakah ada cara mudah yang bagus untuk menjatuhkan semua tabel dari database MySQL, mengabaikan batasan kunci asing yang mungkin ada di sana?
mysql
foreign-keys
innodb
sql-drop
bcmcfc
sumber
sumber
Drop
dari menu dropdown, Anda dapat menghapusForeign key check
centang pada kotak centang.Jawaban:
Saya menemukan set pernyataan drop yang dihasilkan berguna, dan merekomendasikan tweak ini:
Catatan 1: Ini tidak menjalankan pernyataan DROP, itu hanya memberi Anda daftar mereka. Anda perlu memotong dan menempelkan output ke mesin SQL Anda untuk menjalankannya.
Catatan 2: Jika Anda memiliki LIHAT, Anda harus memperbaiki setiap
DROP TABLE `VIEW_NAME`
pernyataanDROP VIEW `VIEW_NAME`
secara manual.Oleh karena itu, agar pernyataan drop berfungsi jika Anda membutuhkan:
Ini akan menonaktifkan pemeriksaan integritas referensial - jadi ketika Anda selesai melakukan tetesan yang Anda butuhkan, Anda ingin mengatur ulang pemeriksaan kunci
NB: untuk menggunakan output SELECT lebih mudah, opsi mysql -B dapat membantu.
sumber
DROP DATABASE foo; CREATE DATABASE foo;
, yang tidak sama tetapi bekerja untuk saya.Dari http://www.devdaily.com/blog/post/mysql/drop-mysql-tables-in-any-order-foreign-keys :
(Perhatikan bahwa ini menjawab cara menonaktifkan pemeriksaan kunci asing agar dapat menjatuhkan tabel dalam urutan sewenang-wenang. Itu tidak menjawab bagaimana secara otomatis menghasilkan pernyataan drop-table untuk semua tabel yang ada dan menjalankannya dalam satu skrip. Jawaban Jean tidak.)
sumber
Inilah prosedur tersimpan SurlyDre yang dimodifikasi sehingga kunci asing diabaikan:
sumber
_tableName
dengan backquotes. Kalau tidak, itu akan gagal pada beberapa tabel sepertigroup
atau kata kunci lainnya.setiap pendekatan di atas mencakup lebih banyak pekerjaan daripada yang AFAICT ini ...
sumber
mysqldump
kemysql
, tanpa melalui file?mysqldump
kegrep
dalammysql
, ia bekerja. Sekali lagi terima kasih atas solusinya, itu bagus.Dari jawaban ini ,
menjalankan:
Ini menjatuhkan tabel dari database yang sedang digunakan. Anda dapat mengatur basis data saat ini menggunakan
use
.Atau sebaliknya, jawaban yang diterima Dion lebih sederhana, kecuali Anda perlu menjalankannya dua kali, pertama untuk mendapatkan kueri, dan kedua untuk menjalankan kueri. Saya memberikan beberapa tanda centang konyol untuk melarikan diri karakter khusus dalam nama db dan tabel.
sumber
Inilah solusi berbasis kursor. Agak panjang tetapi berfungsi sebagai kumpulan SQL tunggal:
sumber
Anda dapat melakukan:
Kemudian jalankan kueri yang dihasilkan. Mereka akan menjatuhkan setiap tabel pada database saat ini.
Berikut ini beberapa bantuan pada
drop table
perintah.sumber
||
diatur untuk menjadi operator gabungan. Lebih khusus lagi, mode MySQL SQL berisiPIPES_AS_CONCAT
. Referensi: dev.mysql.com/doc/refman/5.0/en/…concat
sebagai ganti||
Saya datang dengan modifikasi ini pada jawaban Dion Truter untuk membuatnya lebih mudah dengan banyak tabel:
Ini mengembalikan semuanya dalam satu bidang, sehingga Anda bisa menyalin satu kali dan menghapus semua tabel (gunakan
Copy Field Content (unquoted)
di Workbench). Jika Anda memiliki BANYAK tabel, Anda dapat mencapai batas tertentuGROUP_CONCAT()
. Jika demikian, tambah variabel maks len (danmax_allowed_packet
, jika perlu).sumber
Satu liner untuk menjatuhkan semua tabel dari database yang diberikan:
Menjalankan ini akan menjatuhkan semua tabel dari database DATABASE_NAME.
Dan hal yang menyenangkan tentang ini adalah bahwa nama database hanya ditulis secara eksplisit satu kali.
sumber
Googling pada topik selalu membawa saya ke pertanyaan SO ini jadi di sini berfungsi kode mysql yang menghapus KEDUA tabel dan tampilan:
sumber
Berikut adalah cara otomatis untuk melakukan ini melalui skrip bash:
sumber
Jika di linux (atau sistem lain yang mendukung perpipaan, gema dan grep) Anda dapat melakukannya dengan satu baris:
Saya tahu ini adalah pertanyaan lama, tetapi saya pikir metode ini cepat dan sederhana.
sumber
Dalam php semudah:
Hanya ingat untuk mengubah YOURDB ke nama database Anda, dan jelas pengguna / pass.
sumber
Dalam shell Linux seperti bash / zsh:
Ini akan menghasilkan perintah, lalu segera memipakannya ke instance klien ke-2 yang akan menghapus tabel.
Bit pintar tentu saja disalin dari jawaban lain di sini - Saya hanya ingin copy-dan-paste-liner (ish) untuk benar - benar melakukan pekerjaan yang diinginkan OP.
Catatan tentu saja Anda harus memasukkan kredensial Anda dalam (dua kali) dalam perintah mysql ini, kecuali jika Anda memiliki pengaturan keamanan yang sangat rendah. (Atau Anda bisa alias perintah mysql Anda untuk memasukkan kredit Anda.)
sumber
Taruh di sini beberapa komentar berguna yang dibuat oleh Jonathan Watt untuk menjatuhkan semua tabel
Ini membantu saya dan saya harap ini bisa bermanfaat
sumber
Lepaskan semua tabel dari database dengan satu baris dari baris perintah:
Di mana [user_name], [password], [host_name] dan [database_name] harus diganti dengan data nyata (pengguna, kata sandi, nama host, nama database).
sumber
Ini adalah posting yang cukup lama, tetapi tidak ada jawaban di sini yang benar-benar menjawab pertanyaan menurut pendapat saya, jadi saya berharap posting saya akan membantu orang!
Saya menemukan solusi ini pada pertanyaan lain yang bekerja sangat baik untuk saya:
Itu benar-benar akan mengosongkan semua tabel Anda di database
DB_NAME
, dan tidak hanya menampilkanTRUNCATE
baris perintah.Semoga ini membantu!
sumber
Membangun jawaban oleh @Dion Truter dan @Wade Williams, skrip shell berikut akan menjatuhkan semua tabel, setelah terlebih dahulu menunjukkan apa yang akan dijalankan, dan memberi Anda kesempatan untuk membatalkan menggunakan Ctrl-C.
sumber
Solusi ini didasarkan pada jawaban @SkyLeach tetapi dengan dukungan menjatuhkan tabel dengan kunci asing.
sumber
sumber
Sederhana dan jelas (mungkin).
Mungkin bukan solusi yang bagus, tetapi ini berhasil dan menyelamatkan hari saya.
Bekerja untuk versi Server: 5.6.38 MySQL Community Server (GPL)
Langkah-langkah yang saya ikuti:
Shell MySQL
sumber
Saya menggunakan yang berikut ini dengan server MSSQL:
Ganti YOUR_DATABASE dengan nama database Anda atau hapus seluruh pernyataan IF (Saya suka keamanan tambahan).
sumber
Solusi terbaik untuk saya sejauh ini
Pilih Database -> Klik Kanan -> Tugas -> Buat Skrip - akan membuka panduan untuk membuat skrip. Setelah memilih objek dalam opsi Scripting yang ditetapkan, klik Tombol Lanjut . Di bawah "Script DROP and CREATE" pilih Script DROP .
Jalankan skrip.
sumber