Как я могу подключить свое устаревшее PHP-приложение к MySQL v8? [дубликат]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как я могу подключить свое устаревшее PHP-приложение к MySQL v8? [дубликат]

Сообщение Anonymous »

У меня есть устаревший форум PHP, который я хотел бы сделать доступным только для чтения для целей архивирования. Мне удалось запустить его в Docker-контейнере с использованием PHP 5.4, и он прекрасно подключается к контейнеру MySQL 5.
Когда я перехожу на использование MySQL 8, происходит сбой для подключения по двум причинам:
  • MySQL 8 переключил протокол аутентификации по умолчанию с mysql_native_password на caching_sha2_password, а драйвер mysql php не поддерживает последний протокол. Я исправил это, создав пользователя, который использует механизм аутентификации mysql_native_password.
  • MySQL 8 переключил набор символов сервера по умолчанию с utf8 на utf8mb4, что Драйвер mysql php не поддерживает. Меня застала эта проблема.
Ошибка PHP:

Код: Выделить всё

Warning: mysql_connect(): Server sent charset (255) unknown to the client.
Я знаю, что могу это исправить, изменив набор символов сервера MySQL, но я запускаю это в производственном управляемом кластере MySQL (из Digital Ocean), и у меня нет доступ, чтобы изменить это. Поэтому мне интересно, могу ли я изменить его на уровне базы данных или уровне клиента/соединения.
Я пробовал изменить кодировку базы данных перед импортом данных, используя:

Код: Выделить всё

ALTER DATABASE
database_name
CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;
Я также пробовал изменить кодировку соединения в PHP, используя:

Код: Выделить всё

$this->db_connect_id = mysql_connect($this->server, $this->user, $this->password);
mysql_set_charset("UTF8", $this->db_connect_id);
Но ошибка «Сервер отправил неизвестную кодировку» находится в строке mysql_connect, поэтому к моменту запуска mysql_set_charset ошибка уже выдается, и db_connect_id неверно.
Я также знаю, что могу обновить PHP и переключиться с устаревшего расширения mysql на mysqli или PDO, но этот форум существует с 2005 года, и Я никогда не собираюсь использовать его; это просто для архивных целей. Я надеюсь, что можно просто заставить его работать без необходимости обновления.
Есть предложения?

Подробнее здесь: https://stackoverflow.com/questions/670 ... o-mysql-v8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»