mysqldump throws: Tabel tidak dikenal 'COLUMN_STATISTICS' di information_schema (1109)

118

Setiap kali saya mencoba membuat, mysqldumpsaya mendapatkan kesalahan berikut:

$> mysqldump --single-transaction --host host -u user -p db > db.sql
mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM,
'$."number-of-buckets-specified"') FROM
information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'db' AND
TABLE_NAME = 'Absence';':
Unknown table 'COLUMN_STATISTICS' in information_schema (1109)

Hasilnya adalah dump yang tidak lengkap. Yang aneh adalah bahwa perintah yang sama, dijalankan dari host lain, berfungsi tanpa membuang kesalahan. Apakah seseorang mengalami masalah yang sama?

Saya menggunakan klien mysql 8.0dan mencoba mengakses 5-7server mysql - mungkin itu alasannya?

chevallier
sumber

Jawaban:

169

Ini disebabkan oleh flag baru yang diaktifkan secara default di mysqldump 8. Anda dapat menonaktifkannya dengan menambahkan --column-statistics = 0. Perintahnya akan seperti:

mysqldump --column-statistics=0 --host=<server> --user=<user> --password=<password> 

Periksa tautan ini untuk informasi lebih lanjut. Untuk menonaktifkan statistik kolom secara default, Anda dapat menambahkan

[mysqldump]
column-statistics=0

ke file konfigurasi MySQL, seperti /etc/my.cnf atau ~ / .my.cnf.

cristhiank
sumber
--databases <nama basis data> untuk basis data tertentu
Mohhamad Hasham
@forthrin Jawaban diedit untuk menunjukkan bagaimana membuat perubahan itu permanen.
Andrew Schulman
2
Ada juga pengaturan di MySQL Workbench: Di bawah "Advanced Options ...", di bagian "other", ada kolom-statistik yang diatur ke "TRUE". Ubah ini menjadi nol seperti yang disarankan untuk menonaktifkan.
Alex Barker
6
MySQLWorkbench v8.0.14 tidak memiliki pengaturan itu. Apa yang saya lakukan (pada Mac) adalah mengunduh versi MySQLWorkbench yang lebih lama, membuka paket itu (Tampilkan konten Paket) dan mengeluarkan versi 'mysqldump' yang dibundel. Saya kemudian mengedit preferensi MySQLWorkbench untuk melihat versi 'mysqldump' ini dan bukan versi miliknya. Ekspor berfungsi dengan baik tanpa harus menetapkan bendera apa pun. ref) bugs.mysql.com/bug.php?id=91640#c484427
Scott
1
Bagi siapa pun yang menggunakan DataGrip, Anda dapat mengklik kanan skema di jendela Database, buka "Dump dengan 'mysqldump'", dan tambahkan --column-statistics=0argumen ke daftar argumen yang dibuat dalam kotak di bagian bawah jendela sembulan.
Travesty3
27

Bagi mereka yang menggunakan MySQL Workbench, ada tombol "Opsi Lanjutan" pada layar Ekspor Data. Opsi "Gunakan Statistik Kolom" dapat dinonaktifkan dengan mengatur ke 0.

Saya belum mengonfirmasi, tetapi informasi berikut telah disarankan juga benar: Dalam Versi 8.0.14 itu tidak ada. Dalam Versi 8.0.16 melakukan ini secara default.

atjoedonahue
sumber
7
Hanya MySQL Workbench versi 8.0.13 dan setelahnya memiliki opsi ini untuk menonaktifkan "Gunakan Statistik Kolom".
Paul Deng
7
MySQL Workbench versi 8.0.14 tidak memiliki opsi ini. Sepertinya mereka mengeluarkannya.
Dean Or
3
Memang, bugs.mysql.com/bug.php?id=94294 , harus kembali ke 8.0.16 ...
Jean-Christophe Meillaud
masih terjadi pada 8.0.16
Amir Bar
Saya dapat mengonfirmasi bahwa MySQLWorkbench v8.0.17 memperbaiki masalah (MacOs). Itu melempar kesalahan ini pada MySQLWorkbench v8.0.12 dan ditingkatkan. Saya perhatikan itu tidak memperingatkan saya tentang mengekspor data dari 5.X DB lagi dan secara otomatis menambahkan --column-statistics=0perintah ekspor.
Elte156
20

Saya menghabiskan sepanjang hari mencari solusi, dan bernyanyi di sini hanya untuk berbagi milik saya.

Ya, mungkin kesalahan ini karena perbedaan versi.

Cukup unduh Arsip MySQL 5.7 ZIP dari sini: https://dev.mysql.com/downloads/mysql/ dan unzip, lalu gunakan file mysqldump.exe dari sana.

Jika Anda menggunakan MySQL Workbench, Anda harus menetapkan jalur ke Alat mysqldump yang Anda unduh dengan masuk ke Edit -> Preferences -> Administration (dari panel sebelah kiri).

Semoga ini membantu.

DodiX
sumber
3
Untuk pengguna Windows, .exe ini terletak di:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
Jason
1
MySQLWorkbench v8.0.16 masih kehilangan opsi untuk mengatur flag-statistik kolom. Solusi ini bisa dibilang jawaban terbaik karena memungkinkan pencocokan versi MySQL yang tepat jika terjadi masalah di masa depan.
Kiksy
5

Untuk membuat jawaban ini lebih mudah, Anda dapat mengganti nama mysqldump, membuat skrip shell di tempatnya dan memanggil yang diganti namanya mysqldumpdengan --column-statistics=0argumen. Misalnya:

Ganti nama mysqldump:

mv /usr/local/bin/mysqldump /usr/local/bin/_mysqldump

Simpan skrip shell berikut di tempatnya:

#!/bin/sh

_mysqldump --column-statistics=0 $@
pierlo
sumber
1
Ini adalah saran yang bagus dan berfungsi di MacOSX dengan Mysql Workbench, namun Anda harus memasukkan path lengkap ke mysqldump Anda yang sebenarnya yang dapat dieksekusi atau sepertinya tidak berfungsi. Saya mencoba ./ Tapi masih tidak berhasil. Menempatkan di jalur penuh dan Workbench dapat menjalankannya dengan statistik ditandai.
Andy D
4

Bekerja termudah di sekitar

Saat menggunakan Mysql Workbench 8.0

  • Buka Tab "Ekspor Data"
  • Klik Opsi Tingkat Lanjut masukkan deskripsi gambar di sini
  • Di bawah tajuk Lainnya, setel statistik kolom ke 0 masukkan deskripsi gambar di sini
  • Ekspor lagimasukkan deskripsi gambar di sini

Semoga berhasil!

anson
sumber
5
Saya tidak memiliki opsi ini di bagian "Lainnya"
JoRouss
@JoRouss Ambil 8.0.13 downloads.mysql.com/archives/workbench mungkin 0,16 versi akan memilikinya lagi! Selain itu, kami menggunakan baris perintah :-)
François Breton
Saya akhirnya menggunakan saran @DodiX. Terima kasih @ Francois!
JoRouss
Solusi bodoh sampai 8.0.16 keluar: di Opsi lanjutan centang "paksa" sehingga kesalahan akan diabaikan. Tentu saja ini akan mengabaikan kesalahan lain
Bostone
@Bostone, solusi ini tidak menghilangkan kesalahan.
Casper
0

Dalam situasi saya, saya menggunakan mac-OS. Omong-omong, ada [mysqldump] column-statistics=0bidang dalam my.cnffile yang ditempatkan di bawah /usr/local/etcdirektori. Menghapus bidang itu memperbaiki masalah. (tidak: versi mysql 5.7 dan diinstal melalui homebrew).

Hatip Aksunger
sumber
0

Saya juga memiliki masalah yang sama, ini terjadi ketika saya menggabungkan beberapa tabel data ke skema yang ada dari skema lain dan mengekspor data yang digabungkan ke file skrip mandiri. Saya memang mencoba mengubah kolom-statistik = 0, tetapi hasilnya mengikuti,

C:\xampp\mysql\bin>mysqldump --column-statistics=0 --host=loalhost --user root --passwod
mysqldump: unknown variable 'column-statistics=0'

Jadi saya tidak membantu. Saya menganalisis log MySQL yang saya temukan itu

2019-01-21 11:31:30 1050 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator.
2019-01-21 11:31:30 4176 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.

itu mengeluh tentang ukuran innodb_buffer_pool_size. Saya berhasil mencapai 24MB. Lalu berhasil.

Rasike Abeyratne
sumber
0

Saya menggunakan XAMPP dan MySQL Workbench memperingatkan tentang ketidakcocokan versi. Saya mengatur MySQL Workbench untuk menunjuk ke mysql.exe dan mysqldump.exe XAMPP.

Pergi ke Edit -> Preferences -> Administration dan atur path untuk masing-masing.

Ini berfungsi setidaknya untuk versi 8.0.14. Jadi bagi orang lain, Anda mungkin ingin menghindari menggunakan versi paket mysql dan mysqldump.

Dekan Atau
sumber