mysqldumpがスローする:information_schemaの不明なテーブル 'COLUMN_STATISTICS'(1109)


118

作成しようとするたびmysqldumpに、次のエラーが表示されます。

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

結果は、完全ではないダンプです。奇妙なことは、別のホストから実行された同じコマンドがエラーをスローすることなく機能することです。誰かが同じ問題を経験しましたか?

私はmysql-client 8.0を使用してmysql 5-7サーバーにアクセスしようとしています-それが理由でしょうか?

回答:


169

これは、mysqldump 8でデフォルトで有効になっている新しいフラグによるものです。--column-statistics = 0を追加することで無効にできます。コマンドは次のようになります。

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

詳細については、このリンクを確認してください。デフォルトで列統計を無効にするには、追加できます

[mysqldump]
column-statistics=0

/etc/my.cnfや〜/ .my.cnfなどのMySQL構成ファイル。


--databases <特定のデータベースのデータベース名>
Mohhamad Hasham

@forthrin回答は、変更を永続的にする方法を示すために編集されました。
アンドリューシュルマン

2
MySQL Workbenchにも設定があります。「Advanced Options ...」の下の「other」セクションには、「TRUE」に設定された列統計があります。これをゼロに変更して、無効にすることを提案します。
アレックスバーカー

6
MySQLWorkbench v8.0.14にはその設定はありません。(Macで)私がしたことは、MySQLWorkbenchの古いバージョンをダウンロードし、そのパッケージ(パッケージの内容を表示)を開き、バンドルされたバージョンの「mysqldump」を取り出したことです。次に、MySQLWorkbenchの設定を編集して、独自のバージョンではなく、このバージョンの「mysqldump」を確認しました。エクスポートは、フラグを設定しなくても正常に機能します。ref)bugs.mysql.com/bug.php?id=91640#c484427
Scott

1
DataGripを使用しているユーザーは、データベースウィンドウでスキーマを右クリックし、「 'mysqldump'でダンプ」に移動し--column-statistics=0、ポップアップウィンドウの下部にあるボックスで生成された引数リストに引数を追加できます。
Travesty3

27

MySQL Workbenchを使用している場合、データエクスポート画面に[詳細オプション]ボタンがあります。オプション「列統計の使用」は、0に設定することにより無効にできます。

私は確認していませんが、次の情報も真実であると示唆されています:バージョン8.0.14では欠落しています。バージョン8.0.16では、デフォルトでこれを行っています。


7
MySQL Workbenchバージョン8.0.13以降にのみ、「列統計の使用」を無効にするこのオプションがあります。
ポール・トウ

7
MySQL Workbenchバージョン8.0.14にはこのオプションはありません。彼らはそれを取り出したように見えます。
ディーンまたは


まだ8.0.16で発生しています
アミールバー

MySQLWorkbench v8.0.17が問題(MacO)を修正したことを確認できます。MySQLWorkbench v8.0.12でこのエラーがスローされ、アップグレードされました。5.X DBからのデータのエクスポートに関する警告が表示されなくなり--column-statistics=0、エクスポートコマンドに自動的に追加されたことに気付きました。
Elte156

20

私は一日中解決策を探して過ごし、私のものを共有するためだけにここで歌いました。

はい、おそらくこのエラーはバージョンの違いが原因です。

MySQL 5.7 ZIPアーカイブhttps://dev.mysql.com/downloads/mysql/からダウンロードして解凍し、そこからmysqldump.exeファイルを使用するだけです。

MySQL Workbenchを使用している場合は、[編集]-> [設定]-> [管理](左側のペインから)に移動して、ダウンロードしたmysqldumpツールへのパスを設定する必要があります。

お役に立てれば。


3
:Windowsユーザーの場合、この.exeファイルは次の場所にありましたC:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
ジェイソン

1
MySQLWorkbench v8.0.16には、列統計フラグを設定するオプションがまだありません。このソリューションは、将来の問題が発生した場合にMySQLバージョンを適切に一致させることができるため、間違いなくベストアンサーです。
Kiksy

5

ようにするには、この答えは簡単に、あなたが名前を変更することができmysqldump、その場所にシェルスクリプトを作成し、名前を変更呼び出しmysqldump--column-statistics=0引数。例えば:

mysqldumpの名前を変更します。

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

次のシェルスクリプトをその場所に保存します。

#!/bin/sh

_mysqldump --column-statistics=0 $@

1
これは素晴らしい提案であり、MySQL Workbenchを使用してMacOSXで動作しますが、実際のmysqldump実行可能ファイルへのフルパスを含める必要があります。そうしないと動作しなかったようです。./を試しましたが、それでも動作しません。完全なパスを設定すると、Workbenchはフラグをオフにして実行することができました。
アンディD

4

最も簡単な回避策

Mysql Workbench 8.0を使用する場合

  • 「データのエクスポート」タブを開きます
  • 詳細オプションをクリックします ここに画像の説明を入力してください
  • その他の見出しの下で、列統計を0に設定します ここに画像の説明を入力してください
  • 再度エクスポートここに画像の説明を入力してください

幸運を祈ります!


5
私は、「その他」の項では、このオプションを持っていない
JoRouss

@JoRoussダウンロード8.0.13 downloads.mysql.com/archives/workbench多分.16バージョンが再びそれを持っているでしょう!私たちは、コマンドライン:-)使用Otherway
フランソワ・ブルトン

@DodiXの提案を使用することになりました。ありがとう@Francois!
JoRouss

8.0.16がリリースされるまでの愚かな回避策:[詳細オプション]で[強制]をオンにして、エラーを無視します。もちろん、これは他のエラーを無視します
Bostone

@Bostone、このソリューションはエラーを無視しません。
キャスパー


0

私の状況では、mac-OSを使用しています。ちなみに、ディレクトリの下に配置されるファイルには[mysqldump] column-statistics=0フィールドがありました。そのフィールドを削除すると、問題が修正されました。(ない:mysqlバージョンは5.7で、homebrew経由でインストールされます)。my.cnf/usr/local/etc


0

同じ問題もありました。複数のデータテーブルを他のスキーマの既存のスキーマにマージし、マージされたデータを自己完結型のスクリプトファイルにエクスポートすると発生します。column-statistics = 0を変更しようとしましたが、結果は次のとおりでした。

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

だから私は助けていませんでした。私が見つけたMySQLログを分析します

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.

innodb_buffer_pool_sizeのサイズについて不平を言っています。24MBにしました。その後、動作します。


0

私はXAMPPを使用し、MySQL Workbenchはバージョンの不一致について警告します。XAMPPのmysql.exeおよびmysqldump.exeを指すようにMySQL Workbenchを設定します。

[編集]-> [設定]-> [管理]に移動し、それぞれのパスを設定します。

これは少なくともバージョン8.0.14で機能します。そのため、他の人にはバンドル版のmysqlとmysqldumpの使用を避けたいかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.