Проблема с модулем мегрейт в Друпал 11 не могу подключится к базе Друпал 7.
База D7 (sql 5.7) находится на другом хостинге но у того же провайдера ( Reg.ru)
Ввожу данные в форму миграции и получаю вот такую ошибку.
При миграции пользовательского интерфейса возникает ошибка «Ошибка при соединении с сервером базы данных.» Сообщение сервера: SQLSTATE[HY000] [2002] Время ожидания подключения истекло [Совет: это сообщение обычно означает, что в системе не запущен сервер MySQL или что при попытке подключения к серверу вы используете неправильное имя хоста или номер порта. Также следует проверить, не заблокирован ли используемый вами порт TCP/IP брандмауэром или службой блокировки портов.] .
Думал может с хостом проблема, но
провайдер говорит что проблема в скрипте Drupal 11
!
Я сам использовал вот такой скрипт для проверки.. он , отрабатывает нормально.
<?php
/**
* test_db.php
* Проверка доступа к MySQL 5.7
*/
ini_set('display_errors', 1);
error_reporting(E_ALL);
// 1) Настройки
$host = 'xxxx.hosting.reg.ru'; // хост (IP или DNS)
$port = 3306; // порт MySQL
$user = 'xxxxxxx'; // имя пользователя
$pass = 'xxxxxxx'; // пароль
$dbname = 'xxxxxx '; // имя базы, которую проверяем
$timeout = 5; // таймаут в секундах
echo "<pre>";
// 2) Проверка TCP-сокета
echo "1) TCP-соединение с {$host}:{$port} ... ";
$fp = @fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fp) {
echo "ошибка: {$errstr} (код {$errno})\n";
exit;
}
fclose($fp);
echo "OK\n\n";
// 3) Проверка через mysqli
echo "2) Подключение через mysqli ... ";
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
// инициализация и таймаут
$mysqli = mysqli_init();
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, $timeout);
// реальное подключение
$mysqli->real_connect($host, $user, $pass, $dbname, $port);
// задать кодировку utf8mb4 (рекомендуется для 5.7+)
$mysqli->set_charset('utf8mb4');
echo "OK (MySQL server version: " . $mysqli->server_info . ")\n";
// ПРАВИЛЬНЫЙ запрос для проверки прав
$res = $mysqli->query("SHOW TABLES");
if ($res) {
$table_count = $res->num_rows;
echo " Запрос SHOW TABLES выполнен успешно, найдено таблиц: {$table_count}\n";
// Дополнительная проверка: попробуем выбрать что-то из конкретной таблицы
$test_res = $mysqli->query("SELECT 1 FROM bb_acl_users LIMIT 1");
if ($test_res) {
echo " Доступ к таблице bb_acl_users: OK\n";
$test_res->free();
} else {
echo " Нет доступа к таблице bb_acl_users или таблица не существует\n";
}
$res->free();
}
$mysqli->close();
} catch (mysqli_sql_exception $e) {
echo "ОШИБКА подключения/запроса:\n" . $e->getMessage() . "\n";
exit;
}
// 4) Проверка через PDO
echo "3) Подключение через PDO ... ";
$dsn = "mysql:host={$host};port={$port};dbname={$dbname};charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_TIMEOUT => $timeout,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
echo "OK (server version: " . $pdo->getAttribute(PDO::ATTR_SERVER_VERSION) . ")\n";
// ПРАВИЛЬНЫЙ запрос
$stmt = $pdo->query("SHOW TABLES");
if ($stmt) {
$tables = $stmt->fetchAll();
echo " PDO: найдено таблиц - " . count($tables) . "\n";
}
// Проверка конкретной таблицы
try {
$test_stmt = $pdo->query("SELECT COUNT(*) as count FROM bb_acl_users");
$count = $test_stmt->fetch()['count'];
echo " PDO: таблица bb_acl_users содержит {$count} записей\n";
} catch (PDOException $e) {
echo " PDO: нет доступа к таблице bb_acl_users: " . $e->getMessage() . "\n";
}
$pdo = null;
} catch (PDOException $e) {
echo "ОШИБКА PDO:\n" . $e->getMessage() . "\n";
exit;
}
echo
"\nВсе проверки пройдены успешно.\n";
echo "</pre>";
?>В чём может быть проблема? Может кто то сталкивался..

Комментарии
1. Перенести БДу на другой аккаунт можете?
2. reg.ru - нууууу такое. Его тут не все любят.
провйдеры запрещают вывешивать порты базы данных в открытый интернет. доступ только через 127.0.0.1 . на VPS можно перенастроить.
я бы все делал на тестовой машине. а потом после допиливавания переносил на рабочий хостинг.
Да вот тоже думал над этим.. и сделал бы.. НО.
Друпал 7 работает на SQL 5.7 а Друпал 11 на SQL 8. На рег ру на одном сервере может быть только или 5.7 или 8.. Собственно я только из за этого завёл у них второй хостинг. Поэтому я так сделать не могу..
В большинстве случаев проблем не будет при поднятии базы 5.7 версии на 8 версии. Если по шагам:
1. Сделайте дамп базы(экспорт), которая на sql 5.7
2. На сервере, где sql 8 создайте пустую базу и залейте(импорт) в нее созданный дамп
3. Настройте в конфиге друпала, подключение к двум БД (если в коде требуется работать сразу с двумя БД).
Тех поддержка дала мне добро на это.. И по идее скрипт на ПХП отрабатывает нормально.
Счас попробую туннель сделать.
Да у меня это по сути и есть тестовых хостинг. Думаю чтение рабочей базы никак не навредит
Запрещено на Рег Ру так делать
channel 2: open failed: administratively prohibited:"Друпал 7 работает на SQL 5.7 а Друпал 11 на SQL 8" - а на какой-то одной версии они работать не могут?
У Drupal 11 системные требования mySQL 8. А Друпал 7 не поддерживает 8 ку. Может с какими то танцами с бубном их и можно подружить, но я даже не стал смотреть в ту сторону так как в моём случае данная проблема усугубляется ещё и тем что у меня на хостинге плюс ко всему стоит большой форум PHP BB который так же не поддерживает 8 ку. А REG RU так же не даёт ставить разные SQL на одном хостинге.
Продолжаю свою "Повесть о Миграции с Drupal 7 на Drupal 11"
Я всё таки до долбил тех поддержку REG RU и они что то там у себя поменяли. Открыли порты или дали какие то разрешения. Сделали они это молча. Спрашивать у них не стал так как это бесполезно.
Как было дело. Я после отчаяния создать туннель, исправил обратно settings.php и не на что не надеясь ещё раз запустил форму миграци.. И о чудо у меня всё заработало! Это можно было бы списать на мою "тупость" или невнимательность, на то что я не правильно вбил пароль или логин.. Но всё это у меня было забито в seting.php поэтому я вообще ничего не менял (просто закомментировал строчку когда с туннелем пробовал)..
Но тут вылезла другая проблема.. миграция завершилась с ошибкой (и как потом выяснилось достаточно частой)
HTTP Result Code: 404
Debugging information follows.
Path: /batch?id=14&op=do_nojs&op=do
Текст Состояния: error
Текст Ответа: {"message":"No batch with ID 14 exists."}"
Полез смотреть что скачалось.. От статей только заголовки перенеслись.. Но похоже что все.
Заново запускаться Мигрейт отказался.. Сказал что нужна чистая база. Но так как я предварительно на хостинге сделал бакап чистой базы и всех файлов. То просто их восстановил.
Увеличил лимиты памяти и времени выполнения
В settings.php добавил:
<?phpini_set('memory_limit', '512M');ini_set('max_execution_time', 300);
// Или через Drupal settings
$settings['php_memory_limit'] = '512M';
$settings['max_execution_time'] = 300;?>
Заново запускаю. Синяя полоска прошла значительно дальше.. Но.. Сбой произошел в самом конце. (((
Так как запускал вечером когда большая нагрузка на весь интернет решил отложить это дело на ночь.
Опять откатил бекапы.
Ночью запустил весь процесс и он прошёл на Ура и достаточно быстро! Друпал сказал мне что "всё хорошо"..
НО ничего не перенеслось! ((( Ничего от слова совсем. Не таксономия ни стаей. Причем от статей я даже заголовков не вижу. (((
В чём здесь может быть дело? Может быть восстановление из бекапов как то влияет? Или что?
Я на модуле Migrate для Drupal 11 поставил крест. Но пока ещё не прекратил попытки перейти с Drupal 7 на Drupal 11 (хотя мысли о WordPress стали посещать меня чаще). Вернусь к попыткам миграции с помощью модуля Feeds
Возвращайтесь. Мигрейт перенесет, но не все. Я проверял.