Проблема с модулем мегрейт в Друпал 11 не могу подключится к базе Друпал 7

Главные вкладки

Аватар пользователя Zeratul Zeratul 5 сентября в 12:12

Проблема с модулем мегрейт в Друпал 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>";
?>

В чём может быть проблема? Может кто то сталкивался..

Комментарии

Аватар пользователя chei1ahJoh8K chei1ahJoh8K 5 сентября в 15:40

провйдеры запрещают вывешивать порты базы данных в открытый интернет. доступ только через 127.0.0.1 . на VPS можно перенастроить.
я бы все делал на тестовой машине. а потом после допиливавания переносил на рабочий хостинг.

Аватар пользователя Zeratul Zeratul 5 сентября в 16:25

VasyOK wrote: 1. Перенести БДу на другой аккаунт можете?

Да вот тоже думал над этим.. и сделал бы.. НО.
Друпал 7 работает на SQL 5.7 а Друпал 11 на SQL 8. На рег ру на одном сервере может быть только или 5.7 или 8.. Собственно я только из за этого завёл у них второй хостинг. Поэтому я так сделать не могу..

Аватар пользователя kosskren kosskren 5 сентября в 17:40

В большинстве случаев проблем не будет при поднятии базы 5.7 версии на 8 версии. Если по шагам:
1. Сделайте дамп базы(экспорт), которая на sql 5.7
2. На сервере, где sql 8 создайте пустую базу и залейте(импорт) в нее созданный дамп
3. Настройте в конфиге друпала, подключение к двум БД (если в коде требуется работать сразу с двумя БД).

Аватар пользователя Zeratul Zeratul 5 сентября в 16:28

chei1ahJoh8K wrote: провйдеры запрещают вывешивать порты базы данных в открытый интернет. доступ

Тех поддержка дала мне добро на это.. И по идее скрипт на ПХП отрабатывает нормально.

Zeratul wrote: доступ только через 127.0.0.1 . на VPS можно перенастроить.

Счас попробую туннель сделать.

chei1ahJoh8K wrote: я бы все делал на тестовой машине. а потом после допиливавания переносил на рабочий хостинг.

Да у меня это по сути и есть тестовых хостинг. Думаю чтение рабочей базы никак не навредит

Аватар пользователя Zeratul Zeratul 6 сентября в 7:32

VasyOK wrote: а на какой-то одной версии они работать не могут?

У Drupal 11 системные требования mySQL 8. А Друпал 7 не поддерживает 8 ку. Может с какими то танцами с бубном их и можно подружить, но я даже не стал смотреть в ту сторону так как в моём случае данная проблема усугубляется ещё и тем что у меня на хостинге плюс ко всему стоит большой форум PHP BB который так же не поддерживает 8 ку. А REG RU так же не даёт ставить разные SQL на одном хостинге.

Аватар пользователя Zeratul Zeratul 6 сентября в 7:59

Продолжаю свою "Повесть о Миграции с Drupal 7 на Drupal 11"
Я всё таки до долбил тех поддержку REG RU и они что то там у себя поменяли. Открыли порты или дали какие то разрешения. Сделали они это молча. Спрашивать у них не стал так как это бесполезно.

Как было дело. Я после отчаяния создать туннель, исправил обратно settings.php и не на что не надеясь ещё раз запустил форму миграци.. И о чудо у меня всё заработало! Это можно было бы списать на мою "тупость" или невнимательность, на то что я не правильно вбил пароль или логин.. Но всё это у меня было забито в seting.php поэтому я вообще ничего не менял (просто закомментировал строчку когда с туннелем пробовал)..

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

"Возникла AJAX HTTP ошибка.
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;?>

Заново запускаю. Синяя полоска прошла значительно дальше.. Но.. Сбой произошел в самом конце. (((
Так как запускал вечером когда большая нагрузка на весь интернет решил отложить это дело на ночь.
Опять откатил бекапы.

Ночью запустил весь процесс и он прошёл на Ура и достаточно быстро! Друпал сказал мне что "всё хорошо"..
НО ничего не перенеслось! ((( Ничего от слова совсем. Не таксономия ни стаей. Причем от статей я даже заголовков не вижу. (((

В чём здесь может быть дело? Может быть восстановление из бекапов как то влияет? Или что?

Аватар пользователя Zeratul Zeratul 6 сентября в 10:32

Я на модуле Migrate для Drupal 11 поставил крест. Но пока ещё не прекратил попытки перейти с Drupal 7 на Drupal 11 (хотя мысли о WordPress стали посещать меня чаще). Вернусь к попыткам миграции с помощью модуля Feeds