Не открывается админка после переноса сервера drupal

Аватар пользователя ruslan8 ruslan8 27 июля в 21:58

Здравствуйте!

Раньше сервер друпал и БД были на сервере платного хостинга, всё было бы хорошо, если бы этот сервер не закрылся.

Теперь пытаюсь дома поднять веб-сервер на 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'

Комментарии

Аватар пользователя Selpi Selpi 28 июля в 1:42
2

Версия MySQL несовместима с той версией друпала, что у вас установлена.

Судя по ошибке, у вас 7-й друпал, а судя по свежеустановленной убунте, то Мускул там 8-й, на данный момент он не поддерживается 7-м друпалом, хотя можно попробовать пропатчить ядро патчем отсюда: https://www.drupal.org/project/drupal/issues/2978575

Но я бы рекомендовал установить Мускул 5.7 с помощью докера или стороннего репозитария, так как могут всплыть несовместимости не только в ядре, но и в контриб модулях.

Аватар пользователя bsyomov bsyomov 28 июля в 2:26
1

"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.

Аватар пользователя ruslan8 ruslan8 28 июля в 18:17

Большое вам спасибо!
Сначала попробую перехать на mariadb, если не получится , то возьмусь за докер Smile
Что-то страшно звучит - докер, хотя сейчас многие переехали на него и пора его уже изучать.

Аватар пользователя ruslan8 ruslan8 29 июля в 20:02

Ребята, админка заработала! Я счастлив Lol

Друпал 7 заработал на apache2, php 7.3 и mariadb 10.3
C mariadb 10.3 как с хорошей женщиной конечно пришлось поплясать (тут любое слово подходит), чтобы она заработала Lol , с обчного репозитория убунты эта БД не завелась, пришлось лезть на оф. сайт марии и смотреть как с их серверов ставить 10.3 у себя и ещё пришлось файлы локов удалять и с помощью бубна заходить в mysql (от mariadb) и менять способ аутентификации пользователя root иначе невозможно было подключиться к БД.

Теперь нужно изучать как переехать на drupal 9

Аватар пользователя bsyomov bsyomov 29 июля в 20:44

А что именно не завелось? Должна была. Надо было просто /var/lib/mysql чистый. Возможно проблема была в попытке "апгрейда" структуры данных с mysql 8 на mysql 5.7.

Root в mariadb по умолчанию авторизуется без пароля, по системному пользователю. Это очень удобно для работы в консоли. Smile А для сайта надо создавать отдельного пользователя в любом случае, так что это не проблема.

Аватар пользователя ruslan8 ruslan8 29 июля в 20:51

да, надеялся на апгрейд, но не получилось и пришлось грохнуть БД

у меня на maraidb под root-ом команда mysql -u root -p выводила ошибку, гугление говорило о том, что нужно запускать mysql без привилегий, а потом менять способ аутентификации на mysql нативный,

Аватар пользователя bsyomov bsyomov 29 июля в 21:01

Под рутом надо было просто запустить mysql без параметров. Менять на парольный способ не за чем вовсе. Просто надо было создать пользователя для сайта с авторизацией по паролю.

Ну а с 8 на 5.7 обратно только через дампы миграция - структуру он не умеет даунгрейдить. Так что тут только чистить. И если бы это было сделано, вероятно проблем с установкой из родного репозитория ubuntu не возникло бы.

Аватар пользователя ruslan8 ruslan8 29 июля в 21:12

bsyomov wrote: Под рутом надо было просто запустить mysql без параметров. Менять на парольный способ не за чем вовсе. Просто надо было создать пользователя для сайта с авторизацией по паролю.

эх, не читал доку по mariadb Smile хотел по быстрому сайт восстановить

дело в том, что после установки убунты при этом без установки простого mysql почему то уже существует каталог /var/lib/mysql и он не пуст и этот факт меня остановил от его очистки, я думал, что есть ПО, которое юзает это, возможно поэтому установка mariadb из убунтовского репозитория не приводила к тому, что удачно запускался сервис БД после установки, а вот при установке с сервера mariadb даже выскочило предложение установить для пароль для пользователя root, чего не было с убунтовским репозиторием