mysqldump พ่น: ตารางที่ไม่รู้จัก 'COLUMN_STATISTICS' ใน information_schema (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 8.0และพยายามเข้าถึง5-7เซิร์ฟเวอร์mysql - นั่นอาจเป็นเหตุผลหรือไม่

คำตอบ:


169

นี่คือเนื่องจากการตั้งค่าสถานะใหม่ที่เปิดใช้งานโดยค่าเริ่มต้นใน mysqldump 8 คุณสามารถปิดการใช้งานโดยการเพิ่ม --column-stats = 0 คำสั่งจะเป็นดังนี้:

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

ตรวจสอบลิงค์นี้สำหรับข้อมูลเพิ่มเติม หากต้องการปิดใช้งานสถิติคอลัมน์โดยค่าเริ่มต้นคุณสามารถเพิ่ม

[mysqldump]
column-statistics=0

ไปยังไฟล์ MySQL config เช่น /etc/my.cnf หรือ ~ / .my.cnf


- ฐานข้อมูล <ชื่อฐานข้อมูล> สำหรับฐานข้อมูลเฉพาะ
Mohhamad Hasham

@forthrin คำตอบแก้ไขเพื่อแสดงวิธีการเปลี่ยนแปลงแบบถาวร
Andrew Schulman

2
นอกจากนี้ยังมีการตั้งค่าใน MySQL Workbench: ภายใต้ "ตัวเลือกขั้นสูง ... " ในส่วน "อื่น ๆ " มีสถิติคอลัมน์ที่ตั้งค่าเป็น "TRUE" เปลี่ยนเป็นศูนย์ตามที่แนะนำให้ปิดการใช้งาน
Alex Barker

6
MySQLWorkbench v8.0.14 ไม่มีการตั้งค่านั้น สิ่งที่ฉันทำ (บน Mac) คือการดาวน์โหลด MySQLWorkbench เวอร์ชันเก่าเปิดแพคเกจนั้น (แสดงเนื้อหาของแพ็คเกจ) และดึง 'mysqldump' รุ่นที่รวมมาให้ ฉันแก้ไขการตั้งค่า MySQLWorkbench เพื่อดู 'mysqldump' รุ่นนี้แทนที่จะเป็นของตัวเอง การส่งออกทำงานได้ดีโดยไม่ต้องตั้งค่าสถานะใด ๆ ref) bugs.mysql.com/bug.php?id=91640#c484427
สกอตต์

1
สำหรับใครก็ตามที่ใช้ DataGrip คุณสามารถคลิกขวาที่สคีมาในหน้าต่างฐานข้อมูลไปที่ "การถ่ายโอนข้อมูลด้วย 'mysqldump'" และเพิ่มการ--column-statistics=0โต้แย้งไปยังรายการอาร์กิวเมนต์ที่สร้างขึ้นในกล่องที่ด้านล่างของหน้าต่างป๊อปอัป
Travesty3

27

สำหรับผู้ที่ใช้งาน MySQL Workbench จะมีปุ่ม "ตัวเลือกขั้นสูง" บนหน้าจอการส่งออกข้อมูล ตัวเลือก "ใช้สถิติคอลัมน์" สามารถปิดใช้งานได้โดยตั้งค่าเป็น 0

ฉันยังไม่ได้รับการยืนยัน แต่มีการแนะนำข้อมูลต่อไปนี้ว่าเป็นจริง: ในเวอร์ชัน 8.0.14 มันหายไป ในเวอร์ชัน 8.0.16 มันทำสิ่งนี้โดยปริยาย


7
เฉพาะ MySQL Workbench เวอร์ชัน 8.0.13 และหลังจากนั้นมีตัวเลือกนี้เพื่อปิดการใช้งาน "ใช้สถิติคอลัมน์"
Paul Deng

7
MySQL Workbench เวอร์ชั่น 8.0.14 ไม่มีตัวเลือกนี้ ดูเหมือนว่าพวกเขาจะเอามันออกไป
คณบดีหรือ

3
แท้จริงแล้วbugs.mysql.com/bug.php?id=94294ควรกลับมาใน 8.0.16 ...
Jean-Christophe Meillaud

ยังคงเกิดขึ้นที่ 8.0.16
อาเมียร์บาร์

ฉันสามารถยืนยันได้ว่า MySQLWorkbench v8.0.17 แก้ไขปัญหา (MacOs) มีการส่งข้อผิดพลาดนี้ใน MySQLWorkbench v8.0.12 และอัปเกรดแล้ว ฉันสังเกตเห็นว่าไม่ได้เตือนฉันเกี่ยวกับการส่งออกข้อมูลจากฐานข้อมูล 5.X อีกต่อไปและต่อท้าย--column-statistics=0คำสั่งการส่งออกโดยอัตโนมัติ
Elte156

20

ฉันใช้เวลาทั้งวันเพื่อหาทางแก้ปัญหาและร้องเพลงที่นี่เพื่อแบ่งปันของฉัน

ใช่ข้อผิดพลาดนี้อาจเกิดจากความแตกต่างของรุ่น

เพียงแค่ดาวน์โหลดMySQL 5.7 ZIP Archiveจากที่นี่: https://dev.mysql.com/downloads/mysql/และเปิดเครื่องรูดมันจากนั้นใช้ไฟล์ mysqldump.exe จากตรงนั้น

หากคุณใช้งาน MySQL Workbench คุณจะต้องกำหนดพา ธ ไปยังเครื่องมือ mysqldump ที่คุณดาวน์โหลดโดยไปที่Edit -> Preferences -> Administration (จากบานหน้าต่างด้านซ้ายมือ)

หวังว่านี่จะช่วยได้


3
สำหรับผู้ใช้ Windows ไฟล์. exe นี้อยู่ที่:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
Jason

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
นี่เป็นข้อเสนอแนะที่ยอดเยี่ยมและใช้งานได้ใน MacOSX กับ Mysql Workbench แต่คุณต้องรวมเส้นทางแบบเต็มไปยังโปรแกรมปฏิบัติการ mysqldump จริงของคุณหรือดูเหมือนจะไม่ทำงาน ฉันพยายาม. / แต่ก็ยังไม่ทำงาน การใส่เส้นทางแบบเต็มและ Workbench ก็สามารถเรียกใช้ได้โดยมีการตั้งค่าสถานะเป็นปิด
Andy D

4

การทำงานที่ง่ายที่สุด

เมื่อใช้Mysql Workbench 8.0

  • เปิดแท็บ "การส่งออกข้อมูล"
  • คลิกตัวเลือกขั้นสูง ป้อนคำอธิบายรูปภาพที่นี่
  • ภายใต้หัวข้ออื่น ๆ ตั้งค่าสถิติคอลัมน์เป็น 0 ป้อนคำอธิบายรูปภาพที่นี่
  • ส่งออกอีกครั้งป้อนคำอธิบายรูปภาพที่นี่

ขอให้โชคดี!


5
ฉันไม่มีตัวเลือกนี้ในส่วน "อื่น ๆ "
JoRouss

@JoRouss ดาวน์โหลด 8.0.13 downloads.mysql.com/archives/workbenchบางที. 16 เวอร์ชั่นจะมีอีกครั้ง! นอกจากนี้เราใช้ command line :-)
François Breton

ฉันลงเอยด้วยการใช้คำแนะนำ @DodiX ขอบคุณ @ Francois!
JoRouss

วิธีแก้ปัญหาโง่จนกระทั่ง 8.0.16 หมด: ในตัวเลือกขั้นสูงตรวจสอบ "แรง" ดังนั้นข้อผิดพลาดจะถูกละเว้น ของหลักสูตรนี้จะละเว้นข้อผิดพลาดอื่น ๆ
Bostone

@Bostone วิธีนี้ไม่ได้ช่วยแก้ไขข้อผิดพลาด
แคสเปอร์

2

สำหรับ macOS คุณต้องใช้รุ่นเก่ากว่า (8.0.13) เพื่อดู "คอลัมน์สถิติ" เพราะฉันทดสอบเวอร์ชัน 8.0.14 และ 8.0.15 และทั้งคู่ไม่แสดง "คอลัมน์สถิติ"

ดังนั้นหากต้องการปรับ "สถิติคอลัมน์" ให้ใช้เวอร์ชัน 8.0.13 https://downloads.mysql.com/archives/get/file/mysql-workbench-community-8.0.13-macos-x86_64.dmg


0

ในสถานการณ์ของฉันฉันใช้ mac-OS โดยวิธีการที่มี[mysqldump] column-statistics=0ฟิลด์ในmy.cnfไฟล์ที่อยู่ภายใต้/usr/local/etcไดเรกทอรี การลบฟิลด์นั้นแก้ไขปัญหา (ไม่ใช่: เวอร์ชัน mysql คือ 5.7 และติดตั้งผ่าน homebrew)


0

ฉันยังมีปัญหาเดียวกันมันเกิดขึ้นเมื่อฉันผสานหลายตารางข้อมูลไปยังสคีมาที่มีอยู่จากสคีมาอื่น ๆ และส่งออกข้อมูลที่ผสานไปยังไฟล์สคริปต์ที่มีอยู่ในตัวเอง ฉันพยายามเปลี่ยนคอลัมน์สถิติ = 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 ไม่เตือนเกี่ยวกับรุ่นที่ไม่ตรงกัน ฉันตั้งค่า MySQL Workbench ให้ชี้ไปที่ mysql.exe และ mysqldump.exe ของ XAMPP

ไปที่แก้ไข -> การตั้งค่า -> การบริหารและกำหนดเส้นทางสำหรับแต่ละรายการ

ทำงานอย่างน้อยสำหรับรุ่น 8.0.14 ดังนั้นสำหรับคนอื่น ๆ คุณอาจต้องการหลีกเลี่ยงการใช้ mysql และ mysqldump เวอร์ชันรวม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.