Mysql — Не удалось подключить неизвестную базу данных ‘databasename’ ошибка

#php #mysql #mysqli #phpmyadmin #wamp

#php #mysql #pdo #phpmyadmin

Вопрос:

Я использую PDO для подключения к базе данных MySQL. Я не могу подключиться к какой-либо базе данных, которую я создаю, хотя я могу подключиться к уже созданным базам данных (уже созданным по умолчанию). Я использую сервер wamp.

 <?php
try{
$dbh=new PDO("mysql:host=localhost;dbname=mydata","root","");
}catch(Exception $e){
    die("ERROR: Couldn't connect. {$e->getMessage()}");
}
?>
 

Если я заменю mydata на mysql, который является ранее созданной базой данных на сервере wamp, то код работает отлично. Единственная проблема связана с базами данных, которые я создаю. Я попытался предоставить mydata те же привилегии, что и базе данных mysql, но это не сработало.

введите описание изображения здесь

Комментарии:

1. Вы подключаетесь к тому же экземпляру mysql, что и ваш phpmyadmin?

2. @LuckyGrewal. Я полагаю, что люди голосуют против, потому что вы не помогаете сузить проблему, например, вы должны поместить сообщение об ошибке, которое вы получаете. Ответ на этот вопрос может быть любым (кстати, я не отрицал вас :))

Ответ №1:

Это либо орфографическая ошибка, либо PHP-код, и phpmyadmin просто использует разные учетные данные базы данных. Это может произойти, например, если на вашем компьютере установлено несколько серверов баз данных.

Чтобы получить доказательство, выполните следующий запрос в phpmyadmin:

 show databases;
 

А затем запустите тот же запрос в PDO:

 $host = 'your db host';
$user = 'your db username';
$pass = 'your db password';

$pdo = new PDO("mysql:host=$host", $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$databases = $pdo->query('show databases')->fetchAll(PDO::FETCH_COLUMN);
var_dump($databases);
 

или mysqli

 $host = 'your db host';
$user = 'your db username';
$pass = 'your db password';

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect($host, $user, $pass);
$databases = $mysqli->query('show databases')->fetch_all();
var_dump($databases);
 

и сравните результат. Это покажет вам, что либо произошла орфографическая ошибка, либо действительно phpmyadmin и PHP подключены к разным серверам баз данных.

Затем вы можете проверить файл конфигурации в phpMyAdmin, чтобы убедиться, что он подключается к нужному серверу