Pangkas semua tabel dalam database MySQL dalam satu perintah?
346
Apakah ada permintaan (perintah) untuk memotong semua tabel dalam database dalam satu operasi? Saya ingin tahu apakah saya bisa melakukan ini dengan satu permintaan tunggal.
Pangkas semua tabel? maksud Anda memotong semua kolom dari semua tabel dalam database? Dalam bahasa query apa ini? (misalnya SQL, MySQL, Oracle, Postgres, dll)
Jay
Saya tidak yakin saya akan merekomendasikan melakukan ini karena Anda dapat dengan mudah membuat diri Anda kesulitan. Apakah ada alasan mengapa Anda tidak bisa hanya skrip truncate dan menjalankan skrip?
GrayWizardx
thanks 4 jawaban tapi hanya alasan untuk tidak scripting itu berjalan singkat jadi berpikir dari runnind query di mysql
Devang
ya di mysql..and query berarti sesuatu yang mirip dengan truncate table table_name..di sini saya ingin memotong semua baris dari semua tabel di db saya dalam satu permintaan
devang
Anda dapat menggunakan Information_Schema dengan kursor. Tidak yakin tentang MySql, tetapi harus mendukung Information_Schema.Tables
GrayWizardx
Jawaban:
340
Jatuhkan (mis. Hapus tabel)
mysql -Nse 'show tables' DATABASE_NAME |whilereadtable; do mysql -e "drop table $table" DATABASE_NAME; done
Potong (yaitu tabel kosong)
mysql -Nse 'show tables' DATABASE_NAME |whilereadtable; do mysql -e "truncate table $table" DATABASE_NAME; done
Yup, bersih, ty. Tetapi Anda mungkin perlu menjalankan ini dengan -UUSER -pPASSWORD. Anda juga mungkin harus menjalankannya beberapa kali jika Anda memiliki FK tanpa Anda hapus pada kaskade.
mihaicc
47
Jika Anda mengalami masalah FK seperti " Tidak dapat menghapus atau memperbarui baris induk: batasan kunci asing gagal ", pastikan untuk menonaktifkan pemeriksaan kunci asing dengan memodifikasi perintah sebagai berikut:mysql -e "SET FOREIGN_KEY_CHECKS = 0; drop table $table" DATABASE_NAME
Ethan P.
24
Tidak perlu untuk mengulang klien mysql. Keluarkan dari lingkaran seperti ini:mysql -Nse 'show tables' DATABASE_NAME | while read table; do echo "drop table $table;"; done | mysql DATABASE_NAME
Berdasarkan jawaban dan komentar di atas, dan karena mereka tidak bekerja seperti yang diharapkan untuk saya, saya membuat skrip bash sederhana yang dapat Anda gunakan untuk ini. Anda dapat menemukannya di: gist.github.com/mocanuga/eff26a3dcc40ef657a1c812f68511f6d
mocanuga
145
memotong beberapa tabel database pada instance Mysql
SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME,';')FROM INFORMATION_SCHEMA.TABLES where table_schema in('db1_name','db2_name');
Gunakan Hasil Permintaan untuk memotong tabel
Catatan: mungkin Anda akan mendapatkan kesalahan ini:
ERROR 1217(23000): Cannot deleteorupdate a parent row: a foreignkeyconstraint fails
Itu terjadi jika ada tabel dengan referensi kunci asing ke tabel yang Anda coba jatuhkan / potong.
Sebelum memotong tabel Yang perlu Anda lakukan adalah:
Ini mungkin solusi terbaik jika Anda memiliki pengguna dan kata sandi untuk basis data Anda, dan Anda tidak ingin mengetikkannya di shell Anda.
Bach
5
Terpilih karena solusi ini hanya membutuhkan akses DB dan bukan akses SSH. Selain itu OS-independen.
mastazi
@ masazi saya punya beberapa pertanyaan: 1. apa artinya "table_schema"? apakah itu berdiri dari nama skema? 2. untuk apa TABLE_NAME berdiri? apakah itu berdiri untuk tabel yang harus dihapus? 3. haruskah saya menulis tinggi tabel yang harus dihapus dengan perintah seperti "('db1_name', 'db2_name')"?
AAEM
@Ahmed, satu-satunya pengganti yang diperlukan adalah Anda harus mengganti db1_name dan db2_name dengan nama-nama basis data Anda. Kemudian Anda harus menyalin hasil kueri ini, dan menempelkannya sebagai kueri mysql baru dan menjalankannya. INFORMATION_SCHEMA adalah skema built-in yang datang pra-instal di setiap instalasi MySQL dan menyimpan informasi tentang database Anda, jangan sentuh itu atau MySQL Anda akan mulai melakukan kesalahan :-) table_schema dan table_name adalah kolom dari tabel yang disebut "TABLES" di dalam information_schema
mastazi
dengan "db_name", maksud Anda nama skema? saya hanya memiliki 1 skema yang ingin saya hapus data
tabelnya
67
Gunakan phpMyAdmin dengan cara ini:
Tampilan Database => Periksa Semua (tabel) => Kosong
Jika Anda ingin mengabaikan pemeriksaan kunci asing, Anda dapat menghapus centang pada kotak yang mengatakan:
[] Aktifkan pemeriksaan kunci asing
Anda harus menjalankan minimal versi 4.5.0 atau lebih tinggi untuk mendapatkan kotak centang ini.
hi..thanks untuk d balas saya mencoba query ini tapi doesnt tampaknya work..is der sesuatu seperti truncate table table_name yang saya dapat digunakan untuk semua tabel di db saya ..
Devang
Saya lupa bahwa MySQL tidak mendukung operator "+" secara langsung. Dengan asumsi itu adalah kesalahan, saya menambahkan contoh CONCAT () di atas. Jika Anda masih menerima pesan kesalahan, silakan bagikan pesan kesalahan yang sebenarnya.
pantai
kueri ini berfungsi tetapi bagaimana jika saya memiliki nama diff db misalnya devang..adalah nama db saya jadi jika saya menggunakannya sesuai dengan permintaan Anda di atas melempar kesalahan follower .. Tabel 'devang.TABLES' tidak ada
devang
3
Ahh. INFORMATION_SCHEMA adalah tampilan yang ada di database aktif. Jika Anda mengubah database Anda, tampilan kemudian akan dieksekusi terhadap DB itu. Tidak perlu mengubah kueri saat mengubah database. Cukup ikuti langkah-langkah ini: 1) mengubah database aktif. 2) jalankan skrip. 3) salin hasilnya 4) rekatkan hasilnya kembali ke editor 5) jalankan hasilnya. Semua tabel dalam database aktif sekarang terpotong.
pantai
1
WASPADALAH! Ini memilih semua tabel dalam semua database (bahkan yang TIDAK dalam database saat ini. Contoh MySQL tidak berfungsi, tetapi dalam kasus saya ini mengembalikan 293 baris (tabel) alih-alih 66. Bayangkan kehilangan data ...
f4der
19
Saya menemukan ini untuk menjatuhkan semua tabel dalam database:
Jika Anda ingin bekerja dengan database saat ini (dan dengan demikian membuat kode ini portabel), ubah syarat terakhir SELECTmenjadi ini:AND table_schema = DATABASE();
alx
Itu tidak memotong bagi saya. MySQL 5.7.25
Lucas Bustamante
14
Saya merasa paling mudah untuk hanya melakukan sesuatu seperti kode di bawah ini, cukup ganti nama tabel dengan Anda sendiri. penting pastikan baris terakhir selalu SET FOREIGN_KEY_CHECKS = 1;
SET FOREIGN_KEY_CHECKS=0;TRUNCATE`table1`;TRUNCATE`table2`;TRUNCATE`table3`;TRUNCATE`table4`;TRUNCATE`table5`;TRUNCATE`table6`;TRUNCATE`table7`;SET FOREIGN_KEY_CHECKS=1;
Untuk memotong tabel, kita harus membuang batasan kunci asing yang dipetakan ke kolom dalam tabel ini dari tabel lain (pada kenyataannya semua tabel dalam DB / Skema tertentu).
Jadi, semua batasan kunci asing harus diturunkan pada awalnya diikuti oleh pemotongan tabel.
Secara opsional, gunakan tabel optimisasi (dalam mysql, mesin innodb esp) untuk mengklaim kembali ruang / ukuran data yang digunakan untuk OS setelah pemotongan data.
Setelah pemotongan data dilakukan, buat batasan kunci asing yang sama lagi di tabel yang sama. Lihat di bawah ini sebuah skrip yang akan menghasilkan skrip untuk melakukan operasi di atas.
jika menggunakan sql server 2005, ada prosedur tersimpan tersembunyi yang memungkinkan Anda untuk mengeksekusi perintah atau serangkaian perintah terhadap semua tabel di dalam database. Inilah cara Anda akan memanggil TRUNCATE TABLEdengan prosedur tersimpan ini:
Berikut adalah artikel bagus yang menguraikan lebih jauh.
Namun, untuk MySql, Anda bisa menggunakan mysqldump dan menentukan opsi --add-drop-tablesdan --no-datauntuk menjatuhkan dan membuat semua tabel mengabaikan data. seperti ini:
Inilah varian saya untuk memiliki 'satu pernyataan untuk memotong' mereka semua '.
Pertama, saya menggunakan database terpisah bernama 'util' untuk prosedur tersimpan pembantu saya. Kode prosedur tersimpan saya untuk memotong semua tabel adalah:
SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME,';')FROM INFORMATION_SCHEMA.TABLES where table_schema in('databasename1','databasename2');
Jika tidak dapat menghapus atau memperbarui baris induk: batasan kunci asing gagal
Itu terjadi jika ada tabel dengan referensi kunci asing ke tabel yang Anda coba jatuhkan / potong.
Sebelum memotong tabel Yang perlu Anda lakukan adalah:
SET FOREIGN_KEY_CHECKS=0;
Pangkas tabel Anda dan ubah kembali ke
SET FOREIGN_KEY_CHECKS=1;
gunakan kode php ini
$truncate= mysql_query("SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';') as tables_query FROM INFORMATION_SCHEMA.TABLES where table_schema in ('databasename')");while($truncateRow=mysql_fetch_assoc($truncate)){
mysql_query($truncateRow['tables_query']);}?>
Berikut adalah prosedur yang harus memotong semua tabel di database lokal.
Beri tahu saya jika tidak berfungsi dan saya akan menghapus jawaban ini.
Belum dicoba
CREATEPROCEDURE truncate_all_tables()BEGIN-- Declare local variablesDECLARE done BOOLEAN DEFAULT0;DECLARE cmd VARCHAR(2000);-- Declare the cursorDECLARE cmds CURSORFORSELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME)FROM INFORMATION_SCHEMA.TABLES;-- Declare continue handlerDECLARECONTINUE HANDLER FOR SQLSTATE '02000'SET done=1;-- Open the cursorOPEN cmds;-- Loop through all rows
REPEAT
-- Get order numberFETCH cmds INTO cmd;-- Execute the command
PREPARE stmt FROM cmd;EXECUTE stmt;DROP PREPARE stmt;-- End of loop
UNTIL done END REPEAT;-- Close the cursorCLOSE cmds;END;
Saya menemukan bahwa TRUNCATE TABLE .. mengalami masalah dengan batasan kunci asing, bahkan setelah CONSTRAINT NOCHECK ALL, jadi saya menggunakan pernyataan DELETE FROM. Ini berarti bahwa benih identitas tidak disetel ulang, Anda selalu dapat menambahkan CHECKIDENT DBCC untuk mencapai ini.
Saya Gunakan kode di bawah ini untuk mencetak ke jendela pesan, sql untuk memotong semua tabel dalam database, sebelum menjalankannya. Itu hanya membuat sedikit lebih sulit untuk membuat kesalahan.
Saya tidak yakin tapi saya pikir ada satu perintah yang digunakan yang dapat Anda salin skema database ke database baru, setelah Anda melakukan ini, Anda dapat menghapus database lama dan setelah ini Anda dapat menyalin skema database lagi ke nama lama.
mysqldump -uuser -ppassword --no-data salesLeadsBrittany> salesLeadsTemplate.sql Ini akan membuat file sql dengan skema saja (tanpa data). Anda dapat menghapus basis data setelah perintah ini dan dapat membuat ulang database dengan mengimpor skema.
GJ.
0
Saya tahu ini bukan hanya satu perintah, tetapi hasil yang diinginkan dapat dicapai dari dalam phpMyAdmin dengan mengikuti langkah-langkah ini:
Pilih (semua) tabel yang akan dihapus (Periksa Semua)
Pilih "Drop" / "Truncate" dari daftar "With selected:"
Pada halaman konfirmasi ("Apakah Anda benar-benar ingin:") salin kueri (semuanya dengan latar belakang merah)
Pergi ke atas dan klik pada SQL dan tulis: "SET FOREIGN_KEY_CHECKS = 0;" lalu tempelkan kueri yang sebelumnya disalin
Klik "Pergi"
Idenya adalah untuk dengan cepat mendapatkan semua tabel dari database (yang Anda lakukan dalam 5 detik dan 2 klik) tetapi menonaktifkan pemeriksaan kunci asing terlebih dahulu. Tidak ada CLI dan tidak menjatuhkan database dan menambahkannya lagi.
TB=$( mysql -Bse "show tables from DATABASE");for i in${TB};
do echo "Truncating table ${i}";
mysql -e "set foreign_key_checks=0; set unique_checks=0;truncate table DATABASE.${i}; set foreign_key_checks=1; set unique_checks=1";
sleep 1;
done
-
David,
Terima kasih telah meluangkan waktu untuk memformat kode, tetapi beginilah seharusnya diterapkan.
-Kurt
Pada kotak UNIX atau Linux:
Pastikan Anda berada dalam bash shell. Perintah-perintah ini harus dijalankan, dari baris perintah sebagai berikut.
catatan:
Saya menyimpan kredensial saya di file ~ / .my.cnf saya, jadi saya tidak perlu menyediakannya di baris perintah.
catatan:
cpm adalah nama basis data
Saya hanya menunjukkan sampel kecil dari hasil, dari setiap perintah.
Temukan batasan kunci asing Anda:
klarsen@Chaos:~$ mysql -Bse "select concat(table_name, ' depends on ', referenced_table_name)
from information_schema.referential_constraints
where constraint_schema = 'cpm'
order by referenced_table_name"
approval_external_system tergantung pada approval_request
alamat tergantung pada pelanggan
identifikasi pelanggan tergantung pada pelanggan
external_id tergantung pada pelanggan
kredensial tergantung pada pelanggan
email_address tergantung pada pelanggan
approval_request tergantung pada pelanggan
customer_status tergantung pada pelanggan
customer_image tergantung pada pelanggan
Daftar tabel dan jumlah baris:
klarsen@Chaos:~$ mysql -Bse "SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'cpm'"| cat -n
1 address 2972 approval_external_system 03 approval_request 04 country 1895 credential 4686 customer 67767 customer_identification 56318 customer_image 29 customer_status 13639
Pangkas tabel Anda:
klarsen@Chaos:~$ TB=$( mysql -Bse "show tables from cpm");for i in${TB}; do echo "Truncating table ${i}"; mysql -e "set foreign_key_checks=0; set unique_checks=0;truncate table cpm.${i}; set foreign_key_checks=1; set unique_checks=1"; sleep 1; done
Memotong alamat tabel
Memotong tabel approval_external_system
Memotong tabel approval_request
Negara tabel terpotong
Memotong kredensial tabel
Memotong pelanggan meja
Memotong tabel customer_identification
Memotong tabel customer_image
Memotong tabel customer_status
Verifikasi bahwa itu berhasil:
klarsen@Chaos:~$ mysql -Bse "SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'cpm'"| cat -n
1 address 02 approval_external_system 03 approval_request 04 country 05 credential 06 customer 07 customer_identification 08 customer_image 09 customer_status 010 email_address 0
Pada kotak Windows:
CATATAN:
cpm adalah nama basis data
C:\>for/F "tokens=*"%a IN('mysql -Bse "show tables" cpm') do mysql -e "set foreign_key_checks=0; set unique_checks=0; truncate table %a; foreign_key_checks=1; set unique_checks=1" cpm
Permintaan MySQL berikut ini sendiri akan menghasilkan satu permintaan yang akan memotong semua tabel dalam database yang diberikan. Itu memotong kunci ASING:
hei james, saya pikir OP mencari pertama satu liner .... dan kedua perintah untuk mendapatkan semua tabel sekaligus dan menghapusnya. ini memerlukan semacam intervensi pengguna. terima kasih untuk posnya
Jawaban:
Jatuhkan (mis. Hapus tabel)
Potong (yaitu tabel kosong)
sumber
mysql -e "SET FOREIGN_KEY_CHECKS = 0; drop table $table" DATABASE_NAME
mysql -Nse 'show tables' DATABASE_NAME | while read table; do echo "drop table $table;"; done | mysql DATABASE_NAME
memotong beberapa tabel database pada instance Mysql
Gunakan Hasil Permintaan untuk memotong tabel
Catatan: mungkin Anda akan mendapatkan kesalahan ini:
Itu terjadi jika ada tabel dengan referensi kunci asing ke tabel yang Anda coba jatuhkan / potong.
Sebelum memotong tabel Yang perlu Anda lakukan adalah:
Pangkas tabel Anda dan ubah kembali ke
sumber
Gunakan phpMyAdmin dengan cara ini:
Jika Anda ingin mengabaikan pemeriksaan kunci asing, Anda dapat menghapus centang pada kotak yang mengatakan:
Anda harus menjalankan minimal versi 4.5.0 atau lebih tinggi untuk mendapatkan kotak centang ini.
Ini bukan MySQL CLI-fu, tapi hei, itu berhasil!
sumber
MS SQL Server 2005+ (Hapus PRINT untuk eksekusi aktual ...)
Jika platform basis data Anda mendukung tampilan INFORMATION_SCHEMA, ambil hasil dari kueri berikut dan jalankan.
Coba ini untuk MySQL:
Menambahkan titik koma ke Concat membuatnya lebih mudah untuk digunakan misalnya dari dalam workbench mysql.
sumber
Saya menemukan ini untuk menjatuhkan semua tabel dalam database:
Berguna jika Anda dibatasi oleh solusi hosting (tidak dapat menjatuhkan seluruh database).
Saya memodifikasinya untuk memotong tabel. Tidak ada "--add-truncate-table" untuk mysqldump, jadi saya lakukan:
berfungsi untuk saya --edit, memperbaiki kesalahan ketik pada perintah terakhir
sumber
sumber
SELECT
menjadi ini:AND table_schema = DATABASE();
Saya merasa paling mudah untuk hanya melakukan sesuatu seperti kode di bawah ini, cukup ganti nama tabel dengan Anda sendiri. penting pastikan baris terakhir selalu SET FOREIGN_KEY_CHECKS = 1;
sumber
Ini akan mencetak perintah untuk memotong semua tabel:
sumber
Setelah pemotongan data dilakukan, buat batasan kunci asing yang sama lagi di tabel yang sama. Lihat di bawah ini sebuah skrip yang akan menghasilkan skrip untuk melakukan operasi di atas.
Sekarang, jalankan skrip Db Truncate.sql yang dihasilkan
Manfaat. 1) Mengembalikan ruang disk 2) Tidak perlu menjatuhkan dan membuat ulang DB / Skema dengan struktur yang sama
Kekurangannya 1) Kendala FK harus berupa nama dalam tabel dengan nama yang mengandung 'FK' dalam nama kendala.
sumber
jika menggunakan sql server 2005, ada prosedur tersimpan tersembunyi yang memungkinkan Anda untuk mengeksekusi perintah atau serangkaian perintah terhadap semua tabel di dalam database. Inilah cara Anda akan memanggil
TRUNCATE TABLE
dengan prosedur tersimpan ini:Berikut adalah artikel bagus yang menguraikan lebih jauh.
Namun, untuk MySql, Anda bisa menggunakan mysqldump dan menentukan opsi
--add-drop-tables
dan--no-data
untuk menjatuhkan dan membuat semua tabel mengabaikan data. seperti ini:panduan penggunaan mysqldump dari dev.mysql
sumber
Gunakan ini dan bentuk kueri
Sekarang gunakan ini untuk menggunakan kueri ini
jika Anda mendapatkan kesalahan seperti ini
cara termudah untuk pergi adalah di bagian atas file Anda tambahkan baris ini
yang mengatakan bahwa kami tidak ingin memeriksa batasan kunci asing saat membaca file ini.
Ini akan memotong semua tabel di database db1 dan bd2.
sumber
Tidak. Tidak ada perintah tunggal untuk memotong semua tabel mysql sekaligus. Anda harus membuat skrip kecil untuk memotong tabel satu per satu.
ref: http://dev.mysql.com/doc/refman/5.0/id/truncate-table.html
sumber
Inilah varian saya untuk memiliki 'satu pernyataan untuk memotong' mereka semua '.
Pertama, saya menggunakan database terpisah bernama 'util' untuk prosedur tersimpan pembantu saya. Kode prosedur tersimpan saya untuk memotong semua tabel adalah:
Setelah Anda memiliki prosedur tersimpan ini di basis data util Anda, Anda dapat menyebutnya seperti
yang sekarang persis satu pernyataan :-)
sumber
sini untuk saya kenal di sini
Jika tidak dapat menghapus atau memperbarui baris induk: batasan kunci asing gagal
Itu terjadi jika ada tabel dengan referensi kunci asing ke tabel yang Anda coba jatuhkan / potong.
Sebelum memotong tabel Yang perlu Anda lakukan adalah:
Pangkas tabel Anda dan ubah kembali ke
gunakan kode php ini
periksa detail di sini tautan
sumber
Berikut adalah prosedur yang harus memotong semua tabel di database lokal.
Beri tahu saya jika tidak berfungsi dan saya akan menghapus jawaban ini.
Belum dicoba
sumber
Saya menemukan bahwa TRUNCATE TABLE .. mengalami masalah dengan batasan kunci asing, bahkan setelah CONSTRAINT NOCHECK ALL, jadi saya menggunakan pernyataan DELETE FROM. Ini berarti bahwa benih identitas tidak disetel ulang, Anda selalu dapat menambahkan CHECKIDENT DBCC untuk mencapai ini.
Saya Gunakan kode di bawah ini untuk mencetak ke jendela pesan, sql untuk memotong semua tabel dalam database, sebelum menjalankannya. Itu hanya membuat sedikit lebih sulit untuk membuat kesalahan.
sumber
Saya tidak yakin tapi saya pikir ada satu perintah yang digunakan yang dapat Anda salin skema database ke database baru, setelah Anda melakukan ini, Anda dapat menghapus database lama dan setelah ini Anda dapat menyalin skema database lagi ke nama lama.
sumber
Saya tahu ini bukan hanya satu perintah, tetapi hasil yang diinginkan dapat dicapai dari dalam phpMyAdmin dengan mengikuti langkah-langkah ini:
Idenya adalah untuk dengan cepat mendapatkan semua tabel dari database (yang Anda lakukan dalam 5 detik dan 2 klik) tetapi menonaktifkan pemeriksaan kunci asing terlebih dahulu. Tidak ada CLI dan tidak menjatuhkan database dan menambahkannya lagi.
sumber
-
David,
Terima kasih telah meluangkan waktu untuk memformat kode, tetapi beginilah seharusnya diterapkan.
-Kurt
Pada kotak UNIX atau Linux:
Pastikan Anda berada dalam bash shell. Perintah-perintah ini harus dijalankan, dari baris perintah sebagai berikut.
catatan:
Saya menyimpan kredensial saya di file ~ / .my.cnf saya, jadi saya tidak perlu menyediakannya di baris perintah.
catatan:
cpm adalah nama basis data
Saya hanya menunjukkan sampel kecil dari hasil, dari setiap perintah.
Temukan batasan kunci asing Anda:
Daftar tabel dan jumlah baris:
Pangkas tabel Anda:
Verifikasi bahwa itu berhasil:
Pada kotak Windows:
CATATAN:
cpm adalah nama basis data
sumber
Permintaan MySQL berikut ini sendiri akan menghasilkan satu permintaan yang akan memotong semua tabel dalam database yang diberikan. Itu memotong kunci ASING:
sumber
sumber
Soln 1)
Soln 2)
- edit ----
sumber
Ini berhasil untuk saya. Ubah basis data, nama pengguna, dan kata sandi yang sesuai.
mysql -Nse 'show tables' -D DATABASE -uUSER -pPWD | while read table; do echo "SET FOREIGN_KEY_CHECKS = 0;drop table \`$table\`;SET FOREIGN_KEY_CHECKS = 1;"; done | mysql DATABASE -uUSER -pPWD
sumber
Sebuah ide bisa jadi hanya menjatuhkan dan membuat ulang tabel?
EDIT:
@ Jonathan Leffler: Benar
Saran Lainnya (atau jika Anda tidak perlu memotong SEMUA tabel):
Mengapa tidak membuat prosedur tersimpan dasar untuk memotong tabel tertentu
sumber
Berikut ini cuplikan kode yang saya gunakan untuk menghapus tabel. Cukup ubah info $ conn dan TABLE_NAME.
sumber