Я пытаюсь настроить WordPress с MySQL на моем локальном компьютере с Windows 10. Я получаю такую ошибку:
Error establishing a database connection This either means that the username and password information in your wp-config.php file is incorrect or we can't contact the database server at localhost:3307. This could mean your host's database server is down.
Я уже здесь проверял: Ошибка при установлении соединения с базой данных на wordpress
root, так что это работаетЯ выполнил этот запрос select @@hostname, который дает мне: DESKTOP-CFT2ESY
Я пробовал добавить в wp-config.php (не все одновременно):
define('DB_HOST', 'localhost:3307');define('DB_HOST', 'localhost:8899');define('DB_HOST', 'localhost');define('DB_HOST', 'DESKTOP-CFT2ESY');define('DB_HOST', '127.0.0.1');
Ничего из этого не работает, он просто изменяет строку имени хоста в приведенном выше сообщении об ошибке.
Затем я добавил: define('WP_ALLOW_REPAIR', true);define('DB_CHARSET', 'utf8');
Но это нисколько не меняет сообщения об ошибке.
ОБНОВЛЕНИЕ 1
Я запустил SHOW GLOBAL VARIABLES LIKE 'PORT';, и мой сервер работает на порту 3306. В WorkBench я вижу, что моя база данных работает.
Я также добавил все привилегии для пользователя root в мою схему базы данных. Limit to hosts matching моего пользователя настроен на localhost.
ОБНОВЛЕНИЕ 2
Затем я запустил этот PHP-код, который я нашел здесь (я просто изменил пароль пользователя root на пароль моего пользователя root):
<?php
$host = "localhost";
$root = "root";
$root_password = "rootpass";
$user='newuser';
$pass='newpass';
$db = "newdb";
try {
$dbh = new PDO("mysql:host=$host", $root, $root_password);
$dbh->exec("CREATE DATABASE `$db`;
CREATE USER '$user'@'localhost' IDENTIFIED BY '$pass';
GRANT ALL ON `$db`.* TO '$user'@'localhost';
FLUSH PRIVILEGES;")
or die(print_r($dbh->errorInfo(), true));
} catch (PDOException $e) {
die("DB ERROR: ". $e->getMessage());
}
?>
Но это вызывает ошибку:
DB ERROR: SQLSTATE[HY000] [2054] Server sent charset unknown to the client. Please, report to the developers
ОБНОВЛЕНИЕ 3
Затем я выполнил запрос: SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "myDB";, который возвращает utf8, то есть тот же набор символов, что и в моем wp-config.php.
ОБНОВЛЕНИЕ 4
Проверил здесь. У меня только что был mysqlrouter.conf.sample в моей папке C:\Program Files\MySQL\MySQL Server 8.0\etc, поэтому я добавил файл my.cnf с:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
Я перезапустил службу Windows MySQL, но ошибка осталась прежней.
Что еще можно попробовать?
Вы продолжаете перезаписывать их, поэтому действует только последний.
Лол, я почти уверен, что он просто перечислял то, что пробовал
@PatrickSimard: Я действительно перечислял то, что пробовал :-), я также перепроверил имя / пользователя / пароль и буквально скопировал их в рабочую среду для тестирования, и он там работает, так что никаких опечаток. Что еще это может быть? Я использую MySQL как службу Windows, если это важно.
Вы проверили, работает ли ваша БД, слушает ли сокет, и разрешения пользователя разрешают доступ с любого хоста?
@EriksKlotins: Да, см. Обновление 1.
@Flo Удалите порт в DB_HOST. Это не нужно. Кроме того, попробуйте создать простое соединение PHP mysql через pdo или mysqli.
Установите для разрешенных хостов значение% (все) и посмотрите, имеет ли это значение. Кроме того, создайте простой автономный файл php для проверки и устранения неполадок подключения к базе данных.
@Xatenev: Сейчас я уже тестирую только localhost. У вас есть образец файла PHP, который вы мне порекомендуете? Я мало работаю с MySQL :-). @Eriks: Я пробовал сменить его на %, но это не меняет ошибку.
@Flo stackoverflow.com/a/6549440/3223157 используйте строку new PDO(...). Пример: bpaste.net/show/4cecbad900d3
Вы пробовали: define('DB_HOST', '127.0.0.1')?
Вы пробовали создать ванильный PHP-проект и подключиться к БД с помощью PDO? Просто чтобы увидеть, заканчивается ли это чем-то WP или это что-то среднее между PHP + MySQL?
@treyBake: это то, что я пробовал при обновлении 2, верно? Если нет: у вас есть пример, который я могу использовать?
@Flo вроде - но вы пытаетесь создать через него базу данных, подключитесь к базе данных и попробуйте выбрать тестовые данные из таблицы
Пробовал $dbh->exec("SELECT * FROM myDB.wp_terms;") or die(print_r($dbh->errorInfo(), true));, но ошибка остается Server sent charset unknown to the client.
эта помощь: stackoverflow.com/questions/43437490/…?
Вы все равно можете изменить кодировку по умолчанию, сделав это ALTER DATABASE MyDb CHARACTER SET utf8;






Найдите здесь потенциальное решение:
PDO :: __ construct (): сервер отправил кодировку (255), неизвестную клиенту. Сообщите разработчикам
По сути, вы должны убедиться, что и БД, и скрипт используют одну и ту же кодировку, предпочтительно utf-8.
ОБНОВИТЬ: См. Также это: http://php.net/manual/en/mysqli.set-charset.php
Я предлагаю оставить wp в покое и попытаться устранить проблему с помощью автономного скрипта. Вы проверили кодировку подключения к MySQL?
Это то, что я пробовал при обновлении 3, верно? Уже написано utf8.
Я не уверен, как именно wp-config обрабатывает кодировки. Вот почему я предложил работать с автономным скриптом, где у вас есть полный контроль. Важно отметить, что кодировка скрипта, кодировка подключения и кодировка БД должны быть одинаковыми, чтобы все работало.
Как прокомментировал @treyBake, см. здесь.
В основном MySQL 8 изменил кодировку по умолчанию на utfmb4, и теперь с некоторыми клиентами возникают ошибки. Я перешел на MySQL Server 5.6, и проблема исчезла.
Ваш хост не кажется проблемой ... оставьте это на localhost. Убедитесь, что DB_NAME, DB_USER, DB_PASSWORD правильно определены. Маби типа в одном из них?