Právě jsem to měl, zpočátku se prezentoval jako "mysql se obnovuje příliš rychle
" chyba v dmesg
protokoly.
Z přečtení jinde Vystopoval jsem to až k tomu, co jste našli, a myslím, že to ukazuje na nějaký druh korupce v souborech metadat InnoDB. InnoDB dělá věci, jako je zajištění integrity transakcí/rollback a integrity primárního cizího klíče. Na to vás varuje chyba „nesoulad kontrolního součtu“.
Neříkáte, jak spouštíte mysqld, ale možná používáte nějakou variantu na /etc/init.d/mysqld start
nebo service mysqld start
. Místo toho spusťte démona explicitně jako příkaz:
sudo /usr/sbin/mysqld --innodb_force_recovery 0
a pokud víte, proč to děláte, postupně zvyšujte nulovou hodnotu --innodb_force_recovery
dokud proces nezačne.
Upozornění: innodb_force_recovery Parametr určuje, jak vážně se mysqld pokusí "vynutit opravu" chyby kontrolního součtu v úložišti InnoDB. Takže můžete problém ještě zhoršit, nebo budete potřebovat pozdější přebudování indexu, pokud zde vynutíte opravu vysokým číslem, protože InnoDB bude dělat stále drastičtější věci, aby se sám pokusil opravit.
Pokaždé, když se vám nepodaří restartovat mysqld
s konkrétním číslem, např. 2
, měli byste vyhledat chybové zprávy, které se vám zobrazí, než jej zvýšíte na 3
takže si můžete být jisti, že děláte správnou věc. Nejsem odborník na každou chybu, kterou můžete dostat, takže nemohu poskytnout zpětnou vazbu pro každou výjimečnou podmínku:říkám jen, použijte --innodb_force_recovery
opatrně!