ข้อผิดพลาด - ฟังก์ชัน 'innodb' มีอยู่แล้ว


11

ฉันต้องการเริ่มแปลง MyISAM บางตารางเป็น INNODB ใช้ Ubuntu 14.04 เซิร์ฟเวอร์พร้อม MySQL 5.6 (apt-get อัพเกรดจาก 5.5), 32G ram บนซีพียู 4 คอร์ / 8 เธรด เริ่มแรกมีปัญหากับ ...

could not open single-table tablespace file .\mysql\innodb_index_stats.ibd after restart of MySQL

และ

Error: Table "mysql"."innodb_table_stats" not found.

ฉันทำตามคำแนะนำที่โพสต์ของ Rolando แล้วและฐานข้อมูลไม่พังหรือสร้างข้อผิดพลาดขนาดใหญ่อีกต่อไป (ปัญหาข้างต้นหายไปเพียงอธิบายเหตุการณ์สำคัญ ๆ )

ตอนนี้ฉันกังวลเกี่ยวกับข้อผิดพลาดต่อไปนี้ก่อนที่ฉันจะแปลงอะไรเป็น INNODB สหพันธ์สามารถละเว้นจากสิ่งที่ฉันอ่านบรรทัดที่สองด้านล่าง (รวมถึงหัวข้อของโพสต์นี้) เกี่ยวข้องกับฉัน

2014-05-19 01:50:57 30950 [Note] Plugin 'FEDERATED' is disabled.
2014-05-19 01:50:57 30950 [ERROR] Function 'innodb' already exists
2014-05-19 01:50:57 30950 [Warning] Couldn't load plugin named 'innodb' with soname 'ha_innodb.so'.
2014-05-19 01:50:57 30950 [ERROR] Function 'federated' already exists
2014-05-19 01:50:57 30950 [Warning] Couldn't load plugin named 'federated' with soname 'ha_federated.so'.
2014-05-19 01:50:57 30950 [ERROR] Function 'blackhole' already exists
2014-05-19 01:50:57 30950 [Warning] Couldn't load plugin named 'blackhole' with soname 'ha_blackhole.so'.
2014-05-19 01:50:57 30950 [ERROR] Function 'archive' already exists
2014-05-19 01:50:57 30950 [Warning] Couldn't load plugin named 'archive' with soname 'ha_archive.so'.

เพิ่มต่อไปนี้ใน my.cnf จากคำแนะนำที่โพสต์ของ Rolando

innodb_buffer_pool_size=4G
innodb_buffer_pool_instances=2
innodb_read_io_threads=12
innodb_write_io_threads=12
innodb_io_capacity=300
innodb_log_file_size=128M

ไม่แน่ใจว่าเกี่ยวข้องกับ INNODB หรือไม่ ขึ้นอยู่กับสิ่งที่ฉันสามารถหาได้เพิ่ม

innodb_flush_method            = O_DIRECT
innodb_log_files_in_group      = 2
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table          = 1

นั่นไม่ได้ช่วยอะไร ไม่ใช่ว่าฉันคาดว่าจะกำจัด "ฟังก์ชั่นที่มีอยู่" ... lol


คุณเรียกใช้ mysql_upgrade หรือไม่
dwjv

@dwjvไม่แน่ใจดังนั้นฉันจึงรันและได้กล่าวว่า "การติดตั้ง MySQL นี้ได้รับการอัพเกรดเป็น 5.6.17" ปัญหาเดียวกันของ "[ข้อผิดพลาด] ฟังก์ชั่น 'innodb' มีอยู่แล้ว" ใน error.log
traildex

คำตอบ:


12

ปลั๊กอินการโยนข้อผิดพลาดใน error.log ไม่ได้ระบุไว้โดยเฉพาะใน my.cnf ดังนั้นฉันวิ่ง ...

select * from mysql.plugin

สำหรับ MySQL 5.6.17 ฉันลบแถวต่อไปนี้ใน mysql.plugin

innodb ha_innodb.so
federated ha_federated.so
blackhole ha_blackhole.so
archive ha_archive.so

อย่าลบสิ่งที่คุณไม่แน่ใจ ข้างต้นทำงานให้ฉันเป็น ...

  • ฉันไม่ได้ใช้ Federated (เข้าถึงข้อมูลในตารางของฐานข้อมูลระยะไกล)
  • INNODB สร้างขึ้นใน 5.6 ไม่จำเป็นต้องใช้ปลั๊กอิน
  • ฉันไม่ได้ใช้ Blackhole (ยอมรับข้อมูล แต่จะโยนทิ้งและไม่เก็บไว้)
  • ฉันไม่ใช้การเก็บถาวร (การจัดเก็บข้อมูลจำนวนมากโดยไม่มีดัชนีในส่วนเล็ก ๆ )

2
คุณควรได้รับเครดิตพิเศษสำหรับรายการที่ปลั๊กอินทำอะไรขอบคุณ!
n611x007

0

ปัญหา

mysql.innodb_table_statsเป็นส่วนหนึ่งของการติดตั้ง MySQL 5.6 mysql_upgrade ไม่ได้สร้างขึ้นมา ทำไม

  • เมื่อคุณติดตั้ง MySQL 5.6 ตั้งแต่เริ่มต้นไฟล์นั้นจะถูกสร้างขึ้น
  • ไฟล์innodb_table_stats.ibdนี้ไม่มีอยู่ใน schema mysql ใน MySQL 5.5
  • MySQL 5.5's mysql_upgrade ไม่ทราบถึงตารางระบบของ Innodb
  • ในความเป็นจริงมี.ibdไฟล์ห้า (5) ไฟล์ใน MySQL 5.6 ในสกีมา mysql

สารละลาย

โปรดดูโพสต์เหล่านี้ที่ฉันเขียนเมื่อปีที่แล้วว่าทำอย่างไร

ให้มันลอง !!!


ขอบคุณฉันแก้ปัญหาก่อนหน้านี้ด้วยคำแนะนำที่โพสต์ของคุณ ความกังวลของฉันที่นี่คือ "[ข้อผิดพลาด] ฟังก์ชั่น 'innodb' มีอยู่แล้ว" ใน error.log
traildex

0

ฉันได้รับข้อผิดพลาดที่คล้ายกันใน PCLinuxOs สิ่งที่ฉันทำคือแค่เปลี่ยนชื่อไฟล์/etc/my.cnfเป็น/etc/my.cnf.bakและฉันก็สามารถเริ่มต้นเซิร์ฟเวอร์ mysql ฉันไม่รู้เหตุผลที่แน่นอน แต่มันก็ใช้ได้กับฉัน การตั้งค่าในไฟล์นั้นอาจขัดแย้งกัน

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