Bảng mysql / innodb_index_stats có độ dài không khớp trong tên cột tên_bảng. Vui lòng chạy mysql_upTHER


15

Trong mysqld.logtôi có hàng ngàn dòng như:

Table mysql/innodb_index_stats has length mismatch in the column name table_name.  Please run mysql_upgrade

Vì vậy, theo hầu như mọi bài đăng về vấn đề này (và chính thông báo lỗi):

mysql_upgrade -u root -p

Enter password: 
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
...

và tất cả các bảng trong tất cả các cơ sở dữ liệu đều giống như

...
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
The sys schema is already up to date (version 1.5.1).
Checking databases.
...

Nhưng, tôi vẫn nhận được lỗi trong nhật ký

2019-01-27T18:37:15.304587Z 66190 [Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2019-01-27T18:37:15.304620Z 66190 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2019-01-27T18:37:15.304684Z 66190 [Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2019-01-27T18:37:15.304707Z 66190 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name.  Please run mysql_upgrade

Các cấu trúc có vẻ ổn. Có một vấn đề cấu hình? Xin tư vấn.

Câu trả lời dường như là - khởi động lại máy chủ. Tôi không có quyền làm điều này, nhưng sau khi quản trị viên khởi động lại, vấn đề dường như được giải quyết. Không chắc chắn tại sao chỉ khởi động lại MySQL không sửa chữa?

Câu trả lời:


7

Có lẽ thông tin này hữu ích.

https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-23.html

Ghi chú

Bản phát hành này bao gồm một thay đổi đối với các bảng hệ thống innodb_index_stats và innodb_table_stats. Khi nâng cấp lên bản phát hành này, hãy chắc chắn chạy mysql_upTHER để bao gồm những thay đổi này.



Thẳng đến điểm và sửa chữa tuyệt vời. Cảm ơn bạn!
develCuy

3

Bạn có manh mối gì đang xảy ra khi Cảnh báo được tạo không? Nghe có vẻ như một số hình thức của phiên bản không phù hợp. Bạn có plugin nào không?

Vui lòng gửi một lỗi tại bug.mysql.com.

Trong khi đó, làm

USE mysql;
SHOW CREATE TABLE innodb_index_stats ;

Kiểm tra, đặc biệt, định nghĩa của table_name. Nó từng là

`table_name` varchar(64) COLLATE utf8_bin NOT NULL,

8.0 thay đổi nó thành

`table_name` varchar(199) COLLATE utf8_bin NOT NULL,

Nếu vẫn là 64, hãy mô phỏng những gì mysql_update nên làm, bằng cách làm

ALTER TABLE innodb_index_stats
    MODIFY   `table_name` varchar(199) COLLATE utf8_bin NOT NULL;

Ditto cho innodb_table_stats.


Không có plugin. Chỉ là một ví dụ vani MySQL đơn giản.
Roy Hinkley

Cảm ơn. Câu trả lời này xuất hiện như là giải pháp có khả năng cho cùng một vấn đề chúng ta đang gặp phải. Giải pháp đề xuất ít đáng sợ hơn nhiều so với chạy lệnh mù.
Steve Sether

3
Tôi đã thử ALTER TABLEnhưng cảnh báo tiếp tục đến. Tôi đã chạy mysq_upgradevà bây giờ không còn cảnh báo nào nữa
bennythejudge

Tôi đang sử dụng mysql 5.7.23, tôi có nên thực hiện những thay đổi này không? cảm ơn
AMB

@AMB - Cần thêm chi tiết cụ thể để trả lời câu hỏi của bạn. Nói chung , bất cứ khi nào nâng cấp từ phiên bản này sang phiên bản khác, bạn cần chạy mysql_upgradeđể thay đổi bất kỳ sự khác biệt cơ bản nào đi kèm với phiên bản mới hơn. Điều đó bao gồm, nhưng không giới hạn, thay đổi lược đồ cho các bảng hệ thống.
Rick James

1

Trong dòng lệnh:

  1. Chạy mysql_upgrade --user=your_user_name --password
  2. Nhập mật khẩu.

Đó là nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.