Изменение кодировки на utf8mb4 штатными средствами - умирает Блог Исправлено

1

Изменение кодировки на utf8mb4 штатными средствами - умирает Блог. Удаление блога полностью и установка через Инсталлер восстанавливает работу Блога. После попытки снова поменять кодировку штатными средствами - Блог снова умирает.

Query Error 1034: Incorrect key file for table 'blog_blog'; try to repair it
Query: SELECT name, id, url FROM blog_blog ORDER BY sort code 1034
## wa-system/database/waModel.class.php(266)
#0 wa-system/database/waModel.class.php(366): waModel->run()
#1 wa-system/database/waDbQuery.class.php(86): waModel->query()
#2 wa-apps/blog/lib/models/blogBlog.model.php(143): waDbQuery->fetchAll()
#3 wa-apps/blog/lib/classes/blogHelper.class.php(360): blogBlogModel->getAvailable()
#4 wa-apps/blog/lib/config/blogConfig.class.php(104): blogHelper::getAvailable()
#5 wa-apps/blog/lib/config/blogConfig.class.php(10): blogConfig->onCount()
#6 wa-system/controller/waFrontController.class.php(75): blogConfig->onInit()
#7 wa-system/controller/waDispatch.class.php(157): waFrontController->dispatch()
#8 wa-system/controller/waDispatch.class.php(32): waDispatch->dispatchBackend()
#9 wa-system/waSystem.class.php(603): waDispatch->dispatch()
#10 index.php(7): waSystem->dispatch()
#11 {main}
GET
[]
Params
[]

13 комментариев

  • +1
    Алексей Алексей 3 декабря 2020 23:11 #

    Query Error 1034: Incorrect key file for table 'wa_contact_emails'; try to repair it
    Query: SELECT email AS value, ext, status FROM wa_contact_emails WHERE contact_id = 1 ORDER BY sort code 1034
    ## wa-system/database/waModel.class.php(266)
    #0 wa-system/database/waModel.class.php(366): waModel->run()
    #1 wa-system/database/waDbStatement.class.php(229): waModel->query()
    #2 wa-system/database/waModel.class.php(346): waDbStatement->query()
    #3 wa-system/webasyst/lib/models/waContactEmails.model.php(44): waModel->query()
    #4 wa-system/contact/waContactEmailStorage.class.php(37): waContactEmailsModel->getEmails()
    #5 wa-system/contact/waContactStorage.class.php(54): waContactEmailStorage->load()
    #6 wa-system/contact/waContactField.class.php(205): waContactStorage->get()
    #7 wa-system/contact/waContact.class.php(365): waContactField->get()
    #8 wa-cache/c94596/apps/webasyst/templates/compiled/webasyst_ru_RU/1c/07/7c/1c077c4c20760d699339378817df053c4b5ced86.file.SettingsTemplateEmail.html.php(156): waContact->get()
    #9 wa-system/vendors/smarty3/sysplugins/smarty_internal_templatebase.php(186): content_5fc9460bb62a77_96538587()
    #10 wa-system/view/waSmarty3View.class.php(144): Smarty_Internal_TemplateBase->fetch()
    #11 wa-system/controller/waViewAction.class.php(163): waSmarty3View->fetch()
    #12 wa-system/controller/waViewController.class.php(86): waViewAction->display()
    #13 wa-system/controller/waDefaultViewController.class.php(48): waViewController->executeAction()
    #14 wa-system/controller/waController.class.php(21): waDefaultViewController->execute()
    #15 wa-system/controller/waViewController.class.php(46): waController->run()
    #16 wa-system/controller/waFrontController.class.php(263): waViewController->run()
    #17 wa-system/controller/waFrontController.class.php(190): waFrontController->runController()
    #18 wa-system/controller/waFrontController.class.php(84): waFrontController->execute()
    #19 wa-system/controller/waDispatch.class.php(157): waFrontController->dispatch()
    #20 wa-system/controller/waDispatch.class.php(32): waDispatch->dispatchBackend()
    #21 wa-system/waSystem.class.php(603): waDispatch->dispatch()
    #22 index.php(7): waSystem->dispatch()
    #23 {main}
    GET
    []
    Params
    [
      'is_backend_route' => true,
      'app' => 'webasyst',
      'id' => '1',
      'template' => 'successful_signup',
      'module' => 'settingsTemplateEmail',
    ]

  • +1
    Алексей Алексей 3 декабря 2020 23:21 #

  • +1
    Алексей Алексей 3 декабря 2020 23:31 #

    Apache 2.4.41-4ubuntu3.1
    MySQL / PHP 8.0.22-0ubuntu0.20.04.3 - PHP 7.4.3
    Perl 5.30.0-9ubuntu0.2
    Kernel 5.4.0-56-generic
  • +1
    Алексей Алексей 3 декабря 2020 23:58 #

    Свежая установка. Просто установил дефолный вебасист, никаких настроек не делал, ничего не менял. Из настроек - включил режим отладки. Абсолютно лысый вебасист.

    Пойду менять кодировку

    Поменял...

    Query Error 1034: Incorrect key file for table 'blog_blog'; try to repair it
    Query: SELECT name, id, url FROM blog_blog ORDER BY sort code 1034
    ## wa-system/database/waModel.class.php(266)
    #0 wa-system/database/waModel.class.php(366): waModel->run()
    #1 wa-system/database/waDbQuery.class.php(86): waModel->query()
    #2 wa-apps/blog/lib/models/blogBlog.model.php(143): waDbQuery->fetchAll()
    #3 wa-apps/blog/lib/classes/blogHelper.class.php(360): blogBlogModel->getAvailable()
    #4 wa-apps/blog/lib/config/blogConfig.class.php(104): blogHelper::getAvailable()
    #5 wa-apps/blog/lib/config/blogConfig.class.php(10): blogConfig->onCount()
    #6 wa-system/controller/waFrontController.class.php(75): blogConfig->onInit()
    #7 wa-system/controller/waDispatch.class.php(157): waFrontController->dispatch()
    #8 wa-system/controller/waDispatch.class.php(32): waDispatch->dispatchBackend()
    #9 wa-system/waSystem.class.php(603): waDispatch->dispatch()
    #10 index.php(7): waSystem->dispatch()
    #11 {main}
    GET
    []
    Params
    []

  • +2
    Алексей Алексей 4 декабря 2020 00:03 #

    Вот лог файлы 

    1607029029764_error.log https://pastebin.com/DuGhYTSh

    db.log https://pastebin.com/8rtsHm0y

    error.log https://pastebin.com/w6ButsAm

  • +1
    Михаил Ушенин Михаил Ушенин 4 декабря 2020 10:22 #

    Проверили — на тестовом сервере не удалось повторить такие ошибки. Возможно, есть какие-то проблемы на вашем сервере баз данных.

    Попробуйте выполнить починку (repair) таблиц, с которыми возникает ошибка некорректного индексного файла.

  • +1
    Алексей Алексей 4 декабря 2020 20:06 #



  • +1
    Алексей Алексей 4 декабря 2020 20:10 #

    • +1
      Михаил Ушенин Михаил Ушенин 7 декабря 2020 08:45 #

      Если таблицы остались повреждёнными после того, как вы выполнили их починку средствами phpMyAdmin, то это вряд ли связано с работой фреймворка Webasyst. В этом случае вам нужно обратиться к опытному системному администратору для выяснения причин проблемы.

      Если это не так, то напишите нам в службу поддержки — попробуем изучить проблему подробнее и предложить решение в рамках диагностики.

    • +1
      Алексей Алексей 4 декабря 2020 20:22 #

      Диск целый. Я не понимаю, в чём прикол вообще.

      root@site:~# sudo fdisk -l                                                                                                   
      Disk /dev/vda: 120 GiB, 128849018880 bytes, 251658240 sectors                                                                    
      Units: sectors of 1 * 512 = 512 bytes                                                                                            
      Sector size (logical/physical): 512 bytes / 512 bytes                                                                            
      I/O size (minimum/optimal): 512 bytes / 512 bytes                                                                                
      Disklabel type: gpt                                                                                                              
      Disk identifier: D50FFD37-150D-41B3-908E-75588B91EB00                                                                            
                                                                                                                                       
      Device     Start       End   Sectors  Size Type                                                                                  
      /dev/vda1   2048      4095      2048    1M BIOS boot                                                                             
      /dev/vda2   4096 251656191 251652096  120G Linux filesystem                                                                      
      root@prolodki:~# sudo badblocks -sv /dev/vda1                                                                                    
      Checking blocks 0 to 1023                                                                                                        
      Checking for bad blocks (read-only test): done                                                                                   
      Pass completed, 0 bad blocks found. (0/0/0 errors)                                                                               
      root@prolodki:~# sudo badblocks -sv /dev/vda2                                                                                    
      Checking blocks 0 to 125826047                                                                                                   
      Checking for bad blocks (read-only test): done                                                                                   
      Pass completed, 0 bad blocks found. (0/0/0 errors)                                                                               
      root@site:~#                                                                                                                 

      • +1
        replicant replicant 7 декабря 2020 10:46 #

        Поврежденные индексные файлы - это в вашем случае точно не дисковые ошибки, а какие-то проблемы самого mysql 8.

        Есть один способ как добавить поддержку эмодзи не штатными средствами, а вручную точечно. У себя так сделал, т.к. мне поддержка везде и всюду в принципе не нужна вообще, а на страницах и в постах блога может пригодиться.

        Вручную заменить в структуре через phpmyadmin только параметры сравнения некоторых полей некоторых таблиц. Там по факту их совсем чуть-чуть нужно. Проведите ручную коррекцию таблицы blog_post как на скриншотах.




        И сравнение самой таблицы blog_post тоже можно поменять, хотя вроде и без этого эмодзи заработали




        Если после такого заработает, то значит дальше по такой же схеме добавьте только там, где нужно. Но, повторюсь, всё подряд там точно для эмодзи ненужно совсем. Мне этим и не понравился подход WA. Они слишком масштабно перестраивают структуру БД для каких-то эмодзи.
      • +1

        У меня такая же проблема после смены кодировки через настройки.

        Как вернуть кодировку обратно?

        Вариант не срабатывает:

        SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8mb4_general_ci COLLATE utf8_general_ci;') as sqlcode
        FROM `information_schema`.`TABLES` t
        WHERE 1
        AND t.`TABLE_SCHEMA` = 'wp_bd2022'
        ORDER BY 1

        Добавить комментарий

        Чтобы добавить комментарий, зарегистрируйтесь или войдите