Памылка MySQL «Табліца пазначана як пашкоджаная» (Table is marked as crashed) найчасцей узнікае ў табліцах, што выкарыстоўваюць рухавік MyISAM, і азначае, што дадзеная табліца пашкоджана і не можа быць бяспечна прачытана MySQL-серверам. Самы хуткі спосаб вырашыць праблему — зрабіць рэзервовую копію базы, затым праз phpMyAdmin выбраць пашкоджаную табліцу і запусціць Рамонт табліцы. Але не заўсёды гэта проста, як адзін клік: памылка можа паўтарацьcя пры рэзкіх адключэннях сервера, перапоўненні дыска, няправільных запытах, вялікай нагрузцы або старых наладах MySQL. У гэтым гайдзе вы знойдзеце прычыны ўзнікнення памылкі, бяспечныя крокі рамонту праз phpMyAdmin, як правільна зрабіць бэкап перад аперацыяй і як прадухіліць праблему ў будучыні.
Ваш сайт можа быць на WordPress, OpenCart, самапісным PHP ці форумнай платформе. Калі табліца MySQL пашкоджана, наведвальнікі могуць убачыць белы экран, памылку 500, таймаут злучэння або нечаканыя памылкі базы ў адміністрацыйнай панэлі. Для інтэрнэт-крам пашкоджанне табліц заказаў, тавараў, сеансаў ці кошыкаў можа прывесці да фінансавых страт нават за некалькі хвілін. Таму важна не толькі аднавіць дадзеныя, але і зразумець корань праблемы. Надзейны хостынг, рэгулярныя бэкапы і выбар правільнага рухавіка базы значна зніжаюць рызыкі. Для кіруемага і маніторынгавага хостынгу можна ацаніць Hostragons веб-хостынг, а для праектаў з высокай нагрузкай — Hostragons VPS сервер.
Што такое памылка «Table is marked as crashed»?
Памылка «Table is marked as crashed» паказвае, што MySQL пазначыў табліцу як пашкоджаную і сутыкаецца з праблемамі пры чытанні ці запісе. Звычайна паведамленне выглядае так: Table './database/table_name' is marked as crashed and should be repaired або Incorrect key file for table. Гэта сведчыць аб праблемах у файле табліцы, індэксах або цэласнасці дадзеных.
Часцей за ўсё гэта адбываецца на MyISAM-табліцах. MyISAM — стары рухавік, з хуткім чытаннем, але слабай здольнасцю да аднаўлення ў параўнанні з InnoDB. Калі сервер раптоўна адключыцца, запіс на дыск не завершаны або MySQL закрываецца некарэктна, MyISAM-табліцы лёгка пашкоджваюцца. InnoDB, дзякуючы журналу транзакцый і механізму crash recovery, больш устойлівы, але і там магчымыя праблемы: з месцам на дыску, transaction log, словаром дадзеных.
Найбольш частыя прычыны памылкі
Рамонт праз phpMyAdmin выглядае дастатковым, але калі не знойдзеце корань памылкі, яна можа паўтарацьcя зноў і зноў. У рэальнай практыцы найбольш распаўсюджаныя наступныя прычыны:
- Рэзкае адключэнне сервера: Падчас запісу ў табліцу пры адключэнні электрычнасці, рэсете «жалеза» або краху АС — табліца пашкоджваецца.
- Перапоўнены дыск: Калі MySQL не можа запісаць часовыя файлы, індэксы ці абнаўлення, парушаецца цэласнасць базы. Крытычна, калі выкарыстанне дыска >90%.
- Некаратнае спыненне MySQL: Напрыклад, kill -9, асабліва падчас нагрузкі, прыводзіць да праблем з MyISAM.
- Вялікая нагрузка на запіс: Табліцы часовых дадзеных, логаў, сеансаў або пошукавых запытаў на MyISAM вельмі ўразлівыя.
- Памылковы плагін або шаблон: У WordPress дрэнна напісаныя плагіны могуць генераваць шмат запытаў і выклікаць блокіроўкі.
- Праблемы з дыскам або файлавым сістэмай: Bad sector, I/O-памылкі або пашкоджанне FS могуць закрануць файлы базы.
- Старая версія MySQL: Неабноўлены сервер можа мець праблемы з прадукцыйнасцю і аднаўленнем.
Крытычныя бяспечныя крокі перад рамонтам
Рамонт базы звычайна бяспечны, але любая аперацыя з пашкоджанай табліцай не гарантуе поўную захаванасць дадзеных. Асабліва на «жывым» сайце першасна — бэкап.
1. Зрабіце актуальны бэкап базы
Перад тым, як пачаць рамонт праз phpMyAdmin, экспартуйце базу. Нават калі табліца пашкоджана, частка дадзеных можна захаваць. У phpMyAdmin выберыце базу, перайдзіце ў Экспарт, выберыце «Спецыяльны» спосаб і захавайце ў фармаце SQL. На вялікіх базах экспарт можа «завіснуць» — у такіх выпадках скарыстайцеся панеллю хостынгу або SSH-інструментам mysqldump. Для праектаў без бэкап-стратэгіі варта праглядзець Рашэнні для рэзервнага капіравання хостынгу.
2. Вызначце, якая табліца пашкоджана
Памылка звычайна ўтрымлівае назву табліцы. На WordPress гэта можа быць wp_options, wp_posts, wp_comments або wp_actionscheduler_actions. У самапісных праектах — у логах прыкладання, PHP або MySQL. Веданне дакладнай табліцы не дазволіць марнаваць час на рамонт усёй базы.
3. Пераключыце сайт у рэжым абслугоўвання
Падчас рамонту, калі ў табліцу паступае новы запіс, вынік можа быць непрадказальны. Для сайтаў з вялікім трафікам 2–5 хвілін «абслугоўвання» забяспечыць бяспеку. У WordPress скарыстайцеся адпаведным плагінам; у самапісных сістэмах — дадайце часовае перанакіраванне або старонку-стабілізатара. Для бяспекі наведвальнікаў SSL павінны быць актыўны; калі ёсць праблемы з сертыфікатамі — глядзіце Сертыфікат SSL.
Як аднавіць MySQL-табліцу праз phpMyAdmin?
phpMyAdmin робіць рамонт табліц даступным нават для карыстальнікаў без досведу працы з камандным радком. Інструкцыя актуальная для большасці панэляў (cPanel, Plesk і інш.):
Крок 1: Увайдзіце ў phpMyAdmin праз панэль хостынгу
Пасля ўваходу ў хостынг-панэль знайдзіце раздзел «Базы дадзеных» і перайдзіце ў phpMyAdmin. Калі ў вас некалькі даменаў ці аккаунтаў, пераканайцеся, што працуеце з патрэбнай базай. Памылковы рамонт не прынясе шкоды, але страціце час і можаце адрамантаваць тэставы сайт замест «жывога». Калі дамены і базы блытаюцца — праглядзіце Кіраванне даменамі.
Крок 2: Абярыце патрэбную базу
У левым меню выберыце базу, што выкарыстоўвае ваш сайт. Для WordPress глядзіце файл wp-config.php, радок DB_NAME. У самапісных праектах — config.php, .env або database.php. Калі на серверы некалькі сайтаў, гэта асабліва важна.
Крок 3: Знайдзіце і пазначце пашкоджаную табліцу
Пасля адкрыцця базы знайдзіце ў спісе табліцу з памылкай і адзначце яе. Калі памылка закранае некалькі табліц, можна выбраць усе, але пачніце з самай важнай. Каб зразумець, ці гэта MyISAM, паглядзіце поле Engine або Type.
Крок 4: Запусціце «Рамонт табліцы»
Абярыце табліцу і ў выпадаючым меню знізу выберыце Рамонт табліцы. phpMyAdmin запусціць каманду REPAIR TABLE table_name. Па завершэнні атрымаеце статус: «OK», папярэджанне або збой. На вялікіх табліцах рамонт можа заняць некалькі хвілін — не абнаўляйце старонку і не закрывайце браўзер.
Крок 5: Праверце табліцу і пратэстуйце сайт
Пасля рамонту праз тое ж меню запусціце Праверку табліцы. Затым прайдзіцеся па галоўнай старонцы, адміністрацыйнай панэлі, пошуку, спісе тавараў і ўваходзе карыстальнікаў. Для WordPress: захоўвайце спасылкі, чысціце кэш і правярайце лог памылак.
Якія опцыі рамонту ў phpMyAdmin і што яны значаць?
У phpMyAdmin ёсць не толькі «Рамонт табліцы», але і іншыя інструменты абслугоўвання. Кожны мае сваё прызначэнне:
| Опцыя | Што робіць? | Калі выкарыстоўваецца? |
|---|---|---|
| Праверка табліцы | Правярае цэласнасць і памылкі структуры | Перад і пасля рамонту |
| Рамонт табліцы | Аднаўляе пашкоджаныя MyISAM-табліцы і індэксы | Пры памылцы «Table is marked as crashed» |
| Аптымізацыя табліцы | Скарачае пустыя месцы пасля выдалення, упарадкоўвае табліцу | Пасля масавых выдаленняў/абнаўленняў |
| Аналіз табліцы | Абнаўляе статыстыку індэксаў для планіроўшчыка запытаў | Пры падазрэнні на праблемы з індэксамі |
Коратка: для памылкі Table is marked as crashed патрэбна Рамонт табліцы. Аптымізацыя і аналіз — карысныя, але не вырашаюць праблему пашкоджання.
Чым адрозніваецца сітуацыя з табліцамі InnoDB?
У phpMyAdmin опцыя «Рамонт табліцы» для InnoDB не заўсёды працуе, бо InnoDB не выкарыстоўвае простую файл-рамонтную логіку, як MyISAM. Дзякуючы transaction log, redo/undo log і спецыяльным структурам, цэласнасць захоўваецца па-іншаму. Таму пры InnoDB-праблемах трэба аналізаваць серверныя логи, правяраць дыск, вяртацца на бэкап або выкарыстоўваць спецыяльныя рэжымы аднаўлення.
Калі памылка датычыцца MyISAM, рамонт праз phpMyAdmin, хутчэй за ўсё, дапаможа. Калі InnoDB — і вы бачыце паведамленні corrupt, tablespace, cannot open table, спачатку зрабіце бэкап і аналізуйце серверныя логи. У такіх выпадках лепш звярнуцца ў падтрымку хостынгу. Для крытычных дадзеных (напрыклад, інтэрнэт-крам) не варта эксперыментаваць — патрэбна прафесійная дапамога.
Што рабіць, калі рамонт не ўдаўся?
Рамонт праз phpMyAdmin не заўсёды дае вынік. Пры вялікай табліцы, сур'ёзных пашкоджаннях, праблемах з дыскам або абмежаваннях доступу працэс можа спыніцца. Далейшыя дзеянні:
- Вяртанне з бэкапа: Самы надзейны спосаб — аднавіць базу з апошняга «чыстага» бэкапа. Перад тым захавайце пашкоджаную базу асобна.
- Выкарыстанне myisamchk па SSH: Для MyISAM, пры доступе да сервера, выкарыстоўвайце myisamchk. Перад гэтым спыніце MySQL або заблакуйце доступ да табліцы.
- REPAIR TABLE у SQL: У секцыі SQL phpMyAdmin увядзіце REPAIR TABLE table_name; Для вялікіх табліц — опцыі QUICK або EXTENDED.
- Праверка дыска і inode: Калі перапоўнены дыск або inode, рамонт не спрацуе. Спачатку выдаліце лішнія бэкапы, логи, часовыя файлы.
- Аналіз серверных лог: MySQL error log, log вэб-сервера і PHP log дапамогуць выявіць корань праблемы.
На shared-хостынгу SSH або спыненне сэрвісу можа быць недаступна. У такім выпадку паведамляйце падтрымцы памылку, назву табліцы, час узнікнення і апошні бэкап — гэта паскорыць вырашэнне.
Як прадухіліць паўтор памылкі?
Рамонт табліцы — толькі часовае вырашэнне. Для стабільнасці патрэбна дысцыпліна ў абслугоўванні і інфраструктуры. Вось што зніжае рызыкі:
Пераход з MyISAM на InnoDB
У сучасных вэб-праектах InnoDB — больш устойлівы і бяспечны выбар. Ён падтрымлівае транзакцыі, радковыя блокіроўкі і аднаўленне пасля аварый, што робіць яго лепшым для вялікай нагрузкі. Пераход ажыццяўляецца камандай ALTER TABLE table_name ENGINE=InnoDB; Але перад гэтым — тэст у staging і поўны бэкап. Некаторыя старыя сістэмы залежаць ад спецыфічных магчымасцяў MyISAM.
Рэгулярныя і аднаўляльныя бэкапы
Бэкап павінен быць не толькі зроблены, але і сапраўды аднаўляльны. Рэкамендуецца штодзённы бэкап, штотыднёвы поўны, і ручны перад важнымі абнаўленнямі. Мінімум 7 дзён захоўвання — для большасці сайтаў дастаткова. Для e-commerce можна выкарыстоўваць binlog і больш частыя бэкапы.
Маніторынг дыска і рэсурсаў
Калі дыск запоўнены на 85–90%, трэба настройваць аўтаматычныя алерты. MySQL патрабуе вольнае месца для часовых табліц, логаў і індэксаў. Таксама варта сачыць за CPU, RAM і I/O. Сайт, што пастаянна «выбіваецца» за межы рэсурсаў, больш схільны да памылак базы. Калі трафік вырас — пераходзьце на больш моцны пакет; глядзіце Карпаратыўны Хостынг і Хостынг з высокай прадукцыйнасцю.
Маніторынг абнаўленняў плагінаў, шаблонаў і софту
Старыя сістэмы не толькі небяспечныя, але і могуць перагружаць базу неэфектыўнымі запытамі. У WordPress выдаляйце непатрэбныя плагіны, чысціце табліцы логаў і пазбягайце ненадзейных пашырэнняў. Абнаўляйце софт спачатку ў staging і толькі потым на «жывым» сайце — гэта прадухіліць нечаканыя памылкі і індэкс-праблемы.
Карэктнае спыненне сервера і план абслугоўвання
Калі вы кіруеце VPS або dedicated — не спыняйце MySQL «жорстка». Перад абнаўленнямі — спыняйце сэрвісы ўручную, праводзьце рэботы ў мінімальны трафік і правярайце логи пасля запуску. Планаванае абслугоўванне зніжае рызыку пашкоджання базы, асабліва пры вялікім трафіку.
Актуальныя заўвагі для WordPress
WordPress звычайна паказвае агульную памылку памылка падключэння да базы дадзеных («veritabanı bağlantısı kurulurken hata oluştu»), але ў логах можна знайсці назву пашкоджанай табліцы. Найчасцей закранаюцца wp_options, wp_posts, wp_postmeta, wp_comments і табліцы, створаныя плагінамі. Калі пашкоджана wp_options — сайт не можа прачытаць агульныя налады; wp_posts — не будзе кантэнту; лог-табліцы — панэль адміністратара будзе «тармазіць».
У WordPress ёсць убудаваная функцыя рамонту базы: дадайце ў wp-config.php радок define('WP_ALLOW_REPAIR', true);, затым перайдзіце на /wp-admin/maint/repair.php. Пасля рамонту абавязкова выдаліце гэты радок, каб не пакінуць адкрыты доступ. Звычайна phpMyAdmin — больш кантраляваны спосаб, бо вы дакладна выбіраеце табліцу. Для WordPress-праектаў з аптымізаванай інфраструктурай глядзіце хостынг WordPress.
Калі трэба звяртацца да прафесіяналаў?
Не кожную памылку MySQL можна вырашыць самастойна. Прафесійная падтрымка патрэбна, калі:
- Пашкоджана табліца з заказамі, аплатамі, рэгістрацыямі або фінансамі.
- Пасля рамонту памылка не знікла або табліца «згубілася».
- База вялікая (GB і болей), а phpMyAdmin «завісае».
- Праблемы з InnoDB tablespace або redo log.
- Памылкі дыска, I/O або файлавой сістэмы.
- Няма апошняга «чыстага» бэкапа.
Пры звароце ў падтрымку перадавайце поўнае паведамленне памылкі, назву базы і табліцы, час пачатку праблемы, апошнія абнаўленні або міграцыі і дату бэкапа. Гэта значна паскорыць вырашэнне.
Кароткі чэк-ліст
У экстраннай сітуацыі дзейнічайце па наступным алгарытме:
- Вызначце з памылкі, якая табліца пашкоджана.
- Зрабіце бэкап базы.
- Пераключыце сайт у рэжым абслугоўвання.
- У phpMyAdmin абярыце патрэбную базу.
- Знайдзіце і адзначце табліцу, запусціце рамонт.
- Праверце табліцу і функцыі сайта.
- Правядзіце маніторынг дыска, рэсурсаў, бэкапаў і рухавіка табліц.
Пытанні і адказы
Ці азначае памылка MySQL Table is marked as crashed страты дадзеных?
Не заўсёды. Большасць MyISAM-табліц можна аднавіць праз рамонт у phpMyAdmin. Але калі пашкоджанне сур'ёзнае — некаторыя запісы могуць быць страчаны. Таму бэкап перад рамонтам абавязковы.
Ці бяспечна рамантаваць табліцы праз phpMyAdmin?
Звычайна так, але любая аперацыя з «жывой» базай мае рызыкі. Бэкап, правільны выбар табліцы і рэжым абслугоўвання — мінімальны стандарт бяспекі. Для вялікіх або важных табліц лепш звяртацца да спецыялістаў.
Ці варта выкарыстоўваць рамонт для табліц InnoDB?
InnoDB не падтрымлівае рамонт як MyISAM. Для InnoDB аналізуйце журнал MySQL, правярайце дыск і, калі трэба, вяртайцеся з бэкапа. Эксперыменты могуць прывесці да страты дадзеных.
Чаму памылка паўтараецца?
Калі памылка часта ўзнікае — корань не вырашаны. Перапоўнены дыск, рэзкія адключэнні, нагрузка на запіс, пашкоджаныя плагіны, стары MySQL або працяг выкарыстання MyISAM — найбольш частыя прычыны. Для стабільнасці трэба вырашаць корань.
Ці трэба звяртацца ў хостынг перад рамонтам?
Для простых памылак MyISAM можна самастойна зрабіць бэкап і рамантаваць праз phpMyAdmin. Але калі табліца важная, няма бэкапа, база вялікая або праблемы з InnoDB — лепш напісаць у падтрымку.
Вынік
Памылка MySQL «Табліца пазначана як пашкоджаная» найчасцей сустракаецца на MyISAM-табліцах і ў большасці выпадкаў выпраўляецца праз phpMyAdmin. Правільны алгарытм: спачатку бэкап, затым вызначэнне пашкоджанай табліцы, рамонт праз phpMyAdmin і аналіз прычыны. Рэгулярныя бэкапы, дастатковыя рэсурсы сервера, выкарыстанне InnoDB і сучасны софт — гэта гарантыя, што праблема не паўторыцца. Калі падобныя памылкі ўзнікаюць часта — перагледзьце інфраструктуру, выбірайце хостынг па патрэбах з падтрымкай Hostragons ці звяртайцеся па кансультацыю.