Здравствуйте!
Раньше сервер друпал и БД были на сервере платного хостинга, всё было бы хорошо, если бы этот сервер не закрылся.
Теперь пытаюсь дома поднять веб-сервер на ubuntu . Установил apache2, php, mysql - те версии, которые сейчас идут по умолчанию. Настроил phpmyadmin, создал пользователя БД для подключения друпала и дал права как написано в документации к друпалу.
Развернул архив с друпалом со старого хостинга, восстановил mysql БД друпала, сбросил капчу, даже залогинелся пользователем, НО не могу открыть админку сайта друпала. Вот ошибка:
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'system WHERE type = 'module'' at line 1: SELECT filename, name, type, status, schema_version, weight FROM {system} WHERE type = :type; Array ( [:type] => module ) в функции system_get_files_database() (строка 2217 в файле /mnt/sda3/httpd/какой-то сайт :)/modules/system/system.module)
Пожалуйста, подскажите в какую сторону копать, чтобы решить проблему.
PS: заметил, что редактирование старого материала - работает.
поправил только один старый файл: includes/database/mysql/database.inc
заменил это:
SET sql_mode = 'ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER'
на
SET sql_mode = 'ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,ONLY_FULL_GROUP_BY'
Комментарии
Версия MySQL несовместима с той версией друпала, что у вас установлена.
Судя по ошибке, у вас 7-й друпал, а судя по свежеустановленной убунте, то Мускул там 8-й, на данный момент он не поддерживается 7-м друпалом, хотя можно попробовать пропатчить ядро патчем отсюда: https://www.drupal.org/project/drupal/issues/2978575
Но я бы рекомендовал установить Мускул 5.7 с помощью докера или стороннего репозитария, так как могут всплыть несовместимости не только в ядре, но и в контриб модулях.
"SYSTEM (R); added in 8.0.3 (reserved)"
У вас 8.0.3+ mysql где название таблицы system, является теперь зарезервированным словом, поэтому запрос и падает.
Вместо mysql-server (8.x), можно установить mariadb-server(10.3.x), он примерно соответствует mysql 5.7. и в нём не должно быть такой проблемы.
Также у вас скорее всего php 7.4 и это тоже может быть проблемой можно установить что-то более старое(например 7.2) из https://launchpad.net/~ondrej/+archive/ubuntu/php.
Большое вам спасибо!
Сначала попробую перехать на mariadb, если не получится , то возьмусь за докер
Что-то страшно звучит - докер, хотя сейчас многие переехали на него и пора его уже изучать.
Ребята, админка заработала! Я счастлив
Друпал 7 заработал на apache2, php 7.3 и mariadb 10.3
C mariadb 10.3 как с хорошей женщиной конечно пришлось поплясать (тут любое слово подходит), чтобы она заработала , с обчного репозитория убунты эта БД не завелась, пришлось лезть на оф. сайт марии и смотреть как с их серверов ставить 10.3 у себя и ещё пришлось файлы локов удалять и с помощью бубна заходить в mysql (от mariadb) и менять способ аутентификации пользователя root иначе невозможно было подключиться к БД.
Теперь нужно изучать как переехать на drupal 9
А что именно не завелось? Должна была. Надо было просто /var/lib/mysql чистый. Возможно проблема была в попытке "апгрейда" структуры данных с mysql 8 на mysql 5.7.
Root в mariadb по умолчанию авторизуется без пароля, по системному пользователю. Это очень удобно для работы в консоли. А для сайта надо создавать отдельного пользователя в любом случае, так что это не проблема.
да, надеялся на апгрейд, но не получилось и пришлось грохнуть БД
у меня на maraidb под root-ом команда mysql -u root -p выводила ошибку, гугление говорило о том, что нужно запускать mysql без привилегий, а потом менять способ аутентификации на mysql нативный,
Под рутом надо было просто запустить mysql без параметров. Менять на парольный способ не за чем вовсе. Просто надо было создать пользователя для сайта с авторизацией по паролю.
Ну а с 8 на 5.7 обратно только через дампы миграция - структуру он не умеет даунгрейдить. Так что тут только чистить. И если бы это было сделано, вероятно проблем с установкой из родного репозитория ubuntu не возникло бы.
эх, не читал доку по mariadb хотел по быстрому сайт восстановить
дело в том, что после установки убунты при этом без установки простого mysql почему то уже существует каталог /var/lib/mysql и он не пуст и этот факт меня остановил от его очистки, я думал, что есть ПО, которое юзает это, возможно поэтому установка mariadb из убунтовского репозитория не приводила к тому, что удачно запускался сервис БД после установки, а вот при установке с сервера mariadb даже выскочило предложение установить для пароль для пользователя root, чего не было с убунтовским репозиторием