mysqldump zgłasza: nieznana tabela „COLUMN_STATISTICS” w schemacie_informacyjnym (1109)

117

Za każdym razem, gdy próbuję zrobić, pojawia mysqldumpsię następujący błąd:

$> 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)

Wynikiem jest zrzut, który nie jest kompletny. Dziwne jest to, że to samo polecenie, wykonane z innego hosta, działa bez zgłaszania błędów. Czy ktoś doświadczył tego samego problemu?

Korzystam z klienta mysql 8.0i próbuję uzyskać dostęp do 5-7serwera mysql - może to jest powód?

chevallier
źródło

Odpowiedzi:

168

Wynika to z nowej flagi, która jest domyślnie włączona w mysqldump 8. Możesz ją wyłączyć, dodając --column-statistics = 0. Polecenie będzie takie jak:

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

Sprawdź ten link, aby uzyskać więcej informacji. Aby domyślnie wyłączyć statystyki kolumn, możesz dodać

[mysqldump]
column-statistics=0

do pliku konfiguracyjnego MySQL, takiego jak /etc/my.cnf lub ~ / .my.cnf.

Cristhiank
źródło
--databases <nazwa bazy danych> dla konkretnej bazy danych
Mohhamad Hasham
@forthrin Odpowiedź została edytowana, aby pokazać, jak wprowadzić zmianę na stałe.
Andrew Schulman,
2
Istnieje również ustawienie w MySQL Workbench: w sekcji „Opcje zaawansowane ...”, w sekcji „inne” znajduje się statystyka kolumn ustawiona na „PRAWDA”. Zmień to na zero, sugerując wyłączenie.
Alex Barker,
6
MySQLWorkbench v8.0.14 nie ma tego ustawienia. To, co zrobiłem (na komputerze Mac), to pobranie starszej wersji MySQLWorkbench, otwarcie tego pakietu (Pokaż zawartość pakietu) i wyciągnięcie dołączonej wersji „mysqldump”. Następnie edytowałem preferencje MySQLWorkbench, aby zobaczyć tę wersję „mysqldump” zamiast jej własnej. Eksport działa dobrze bez konieczności ustawiania żadnych flag. ref) bugs.mysql.com/bug.php?id=91640#c484427
Scott
1
Każdy, kto korzysta z DataGrip, może kliknąć schemat prawym przyciskiem myszy w oknie bazy danych, przejść do „Zrzuć za pomocą mysqldump” i dodać --column-statistics=0argument do listy wygenerowanych argumentów w polu u dołu wyskakującego okienka.
Travesty3
27

Dla osób korzystających z MySQL Workbench na ekranie eksportu danych znajduje się przycisk „Opcje zaawansowane”. Opcję „Użyj statystyki kolumny” można wyłączyć, ustawiając na 0.

Nie potwierdziłem, ale zasugerowano, że następujące informacje są również prawdziwe: w wersji 8.0.14 brakuje. W wersji 8.0.16 robi to domyślnie.

atjoedonahue
źródło
7
Tylko MySQL Workbench w wersji 8.0.13 i późniejszych ma tę opcję, aby wyłączyć „Użyj statystyki kolumny”.
Paul Deng
7
MySQL Workbench w wersji 8.0.14 nie ma tej opcji. Wygląda na to, że go wyjęli.
Dean Or
3
Rzeczywiście, bugs.mysql.com/bug.php?id=94294 powinien wrócić do wersji 8.0.16 ...
Jean-Christophe Meillaud
wciąż dzieje się o 8.0.16
Amir Bar
Mogę potwierdzić, że MySQLWorkbench v8.0.17 naprawił problem (MacO). Zgłaszano ten błąd na MySQLWorkbench v8.0.12 i zaktualizowano. Zauważyłem, że nie ostrzegało mnie to już przed eksportowaniem danych z DB 5.X i automatycznie dołączyłem --column-statistics=0polecenie eksportu.
Elte156
20

Cały dzień szukałem rozwiązania i śpiewałem tutaj, aby podzielić się moim.

Tak, prawdopodobnie ten błąd wynika z różnicy wersji.

Wystarczy pobrać archiwum ZIP MySQL 5.7 tutaj: https://dev.mysql.com/downloads/mysql/ i rozpakować, a następnie użyć pliku mysqldump.exe.

Jeśli używasz MySQL Workbench, musisz ustawić ścieżkę do pobranego narzędzia mysqldump, przechodząc do Edycja -> Preferencje -> Administracja (z lewego panelu).

Mam nadzieję że to pomoże.

DodiX
źródło
3
Dla użytkowników systemu Windows ten plik .exe został zlokalizowany pod adresem:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
Jason
1
MySQLWorkbench v8.0.16 wciąż nie ma opcji ustawienia flagi statystyki kolumny. To rozwiązanie jest prawdopodobnie najlepszą odpowiedzią, ponieważ pozwala na odpowiednie dopasowanie wersji MySQL w przypadku przyszłych problemów.
Kiksy,
5

Aby ułatwić odpowiedź , możesz zmienić nazwę mysqldump, zrobić skrypt powłoki na jego miejscu i wywołać przemianowaną nazwę mysqldumpz --column-statistics=0argumentem. Na przykład:

Zmień nazwę mysqldump:

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

Zapisz następujący skrypt powłoki na swoim miejscu:

#!/bin/sh

_mysqldump --column-statistics=0 $@
pierlo
źródło
1
Jest to świetna sugestia i działa w systemie MacOSX z Mysql Workbench, jednak musisz podać pełną ścieżkę do swojego prawdziwego pliku wykonywalnego mysqldump, w przeciwnym razie wydaje się, że nie działa. Próbowałem ./, ale nadal nie działało. Po umieszczeniu pełnej ścieżki Workbench był w stanie uruchomić ją z wyłączonymi statystykami.
Andy D,
4

Najłatwiejsze obejście

Podczas korzystania z Mysql Workbench 8.0

  • Otwórz kartę „Eksport danych”
  • Kliknij Opcje zaawansowane wprowadź opis zdjęcia tutaj
  • Pod nagłówkiem Inne ustaw statystyki kolumn na 0 wprowadź opis zdjęcia tutaj
  • Eksportuj ponowniewprowadź opis zdjęcia tutaj

Powodzenia!

anson
źródło
5
Nie mam tej opcji w sekcji „Inne”
JoRouss
@JoRouss Pobierz 8.0.13 downloads.mysql.com/archives/workbench być może wersja .16 będzie miała go ponownie! W przeciwnym razie używamy wiersza polecenia :-)
François Breton
Skończyło się na tym, że skorzystałem z sugestii @DodiX. Dzięki @Francois!
JoRouss
Głupie obejście do czasu wydania 8.0.16: w Opcjach zaawansowanych zaznacz „wymuś”, aby błąd został zignorowany. Oczywiście to zignoruje każdy inny błąd
Bostone
@Bostone, to rozwiązanie nie wyklucza błędu.
Casper
0

W mojej sytuacji używam Mac-OS. Nawiasem mówiąc, [mysqldump] column-statistics=0w my.cnfpliku były pola umieszczone w /usr/local/etckatalogu. Usunięcie tego pola rozwiązało problem. (nie: wersja mysql to 5.7 i jest instalowana przez homebrew).

Hatip Aksunger
źródło
0

Miałem również ten sam problem, występuje, gdy scalam wiele tabel danych z istniejącym schematem z innego schematu i eksportuję scalone dane do samodzielnego pliku skryptu. Próbowałem zmienić statystyki kolumn = 0, ale wynik był następujący,

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

Więc nie pomogłem. Analizuję dziennik MySQL, który znalazłem

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.

narzeka na rozmiar innodb_buffer_pool_size. Zrobiłem to do 24 MB. To działa.

Rasike Abeyratne
źródło
0

Używam XAMPP i MySQL Workbench ostrzega przed niedopasowaniem wersji. Ustawiam MySQL Workbench, aby wskazywał na mysql.exe i mysqldump.exe XAMPP.

Przejdź do Edycja -> Preferencje -> Administracja i ustaw ścieżkę dla każdego.

Działa to przynajmniej w wersji 8.0.14. Tak więc dla innych możesz uniknąć używania dołączonej wersji mysql i mysqldump.

Dean Or
źródło