Erreur SQLSTATE[HY000] [1049] Base 'datalib' inconnue
Résolu
chabinot
Messages postés
322
Date d'inscription
Statut
Membre
Dernière intervention
-
chabinot Messages postés 322 Date d'inscription Statut Membre Dernière intervention -
chabinot Messages postés 322 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaye de me connecter via pdo à une bse de donnée qui existe bien, mais j'ai l'erreur suivante :'SQLSTATE[HY000] [1049] Base 'datalib' inconnue'.
Voilà mon code :
J'utilise une classe Database dont voilà le code :
La base datalib existe bien. Je dois signaler que j'utilise MariaDB à la place de MySql.
Merci de me dire où je me suis trompé.
Cordialement
J'essaye de me connecter via pdo à une bse de donnée qui existe bien, mais j'ai l'erreur suivante :'SQLSTATE[HY000] [1049] Base 'datalib' inconnue'.
Voilà mon code :
<?php // Autoload require './vendor/autoload.php'; //include 'config.ini'; // Connection à la base de donnéé $bdd = new Database("localhost", "datalib", "root", ""); var_dump($bdd);
J'utilise une classe Database dont voilà le code :
<?php class Database { private $host; private $dbname; private $user; private $pwd; private $bdd; private $error; public function __construct($host, $dbname, $user, $pwd) { $this->host = $host; $this->dbname = $dbname; $this->user = $user; $this->pwd = $pwd; // Set [/contents/698-odbc-open-database-connectivity DSN] $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname; // Set options $options = [ PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ]; // Créer une nouvelle instance PDO try { $this->bdd = new PDO($dsn, $this->user, $this->pwd, $options); } // Capture des erreurs catch (PDOException $e) { $this->error = $e->getMessage(); } } public function query($query) { $this->stmt = $this->dbh->prepare($query); } public function bind($param, $value, $type = null) { if (is_null($type)) { switch (true) { case is_int($value): $type = PDO::PARAM_INT; break; case is_bool($value): $type = PDO::PARAM_BOOL; break; case is_null($value): $type = PDO::PARAM_NULL; break; default: $type = PDO::PARAM_STR; } } $this->stmt->bindValue($param, $value, $type); } public function execute() { return $this->stmt->execute(); } public function result() { $this->execute(); return $this->stmt->fetchAll(PDO::FETCH_OBJ); } public function single() { $this->execute(); return $this->stmt->fetch(PDO::FETCH_OBJ); } public function rowCount() { return $this->stmt->rowCount(); } public function lastInsertId() { return $this->bdd->lastInsertId(); } public function beginTransaction() { return $this->bdd->beginTransaction(); } public function endTransaction() { return $this->bdd->commit(); } public function cancelTransaction() { return $this->bdd->rollBack(); } public function debugDumpParams() { return $this->stmt->debugDumpParams(); } }
La base datalib existe bien. Je dois signaler que j'utilise MariaDB à la place de MySql.
Merci de me dire où je me suis trompé.
Cordialement
A voir également:
- Lyrics piste 01<unknown>
- Base de registre - Guide
- Freebox erreur video inconnue - Forum Box et Streaming vidéo
- FreeBox Révolution - Les code erreurs - Astuces et Solutions
- Gigaset as470h base ✓ - Forum telephonie fixe
- Formules excel de base - Guide
3 réponses
Bonjour,
J'ai trouvé, comme j'utilise MariaDB, il fallait juste ajouter dans le DSN le port 3306.
$dsn = 'mysql:host=' . $this->host . ';port=3306,dbname=' . $this->dbname;
Merci encore à tous.
Cordialement
J'ai trouvé, comme j'utilise MariaDB, il fallait juste ajouter dans le DSN le port 3306.
$dsn = 'mysql:host=' . $this->host . ';port=3306,dbname=' . $this->dbname;
Merci encore à tous.
Cordialement
Bonjour,
Hormis le fait que tu aurait éventuellement mal orthographié le nom de ta bdd.. je ne vois pas..
Pourrais tu faire un SHOW DATABASE et nous coller le résultat ?
https://mariadb.com/kb/en/show-databases/
Assures toi aussi que tes fichiers sont bien encodés en UTF8 SANS BOM. histoire de ne pas avoir de caractères cachés qui mettraient le bazar
Au passage :
- rowCount => A n'utiliser QUE pour des requêtes DELETE / INSERT / UPDATE mais en aucun cas pour des requêtes SELECT ( à la place tu pourras faire un COUNT sur le fetchAall )
- Tu dois placer les instructions prepare et execute dans un bloc TRY/CATCH pour voir les éventuelles erreurs.
Hormis le fait que tu aurait éventuellement mal orthographié le nom de ta bdd.. je ne vois pas..
Pourrais tu faire un SHOW DATABASE et nous coller le résultat ?
https://mariadb.com/kb/en/show-databases/
Assures toi aussi que tes fichiers sont bien encodés en UTF8 SANS BOM. histoire de ne pas avoir de caractères cachés qui mettraient le bazar
Au passage :
- rowCount => A n'utiliser QUE pour des requêtes DELETE / INSERT / UPDATE mais en aucun cas pour des requêtes SELECT ( à la place tu pourras faire un COUNT sur le fetchAall )
- Tu dois placer les instructions prepare et execute dans un bloc TRY/CATCH pour voir les éventuelles erreurs.