Error SQLSTATE[HY000] [1049] Base 'datalib' desconocida
Resuelto
chabinot
Mensajes publicados
391
Estado
Miembro
-
chabinot Mensajes publicados 391 Estado Miembro -
chabinot Mensajes publicados 391 Estado Miembro -
Hola,
Estoy intentando conectarme a una base de datos que realmente existe a través de PDO, pero tengo el siguiente error: 'SQLSTATE[HY000] [1049] Base 'datalib' desconocida'.
Aquí está mi código:
Estoy utilizando una clase Database cuyo código es el siguiente:
La base de datos datalib realmente existe. Debo señalar que estoy utilizando MariaDB en lugar de MySql.
Gracias por decirme dónde he cometido un error.
Atentamente
Estoy intentando conectarme a una base de datos que realmente existe a través de PDO, pero tengo el siguiente error: 'SQLSTATE[HY000] [1049] Base 'datalib' desconocida'.
Aquí está mi código:
<?php // Carga automática require './vendor/autoload.php'; //include 'config.ini'; // Conexión a la base de datos $bdd = new Database("localhost", "datalib", "root", ""); var_dump($bdd); Estoy utilizando una clase Database cuyo código es el siguiente:
<?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; // Establecer [/contents/698-odbc-open-database-connectivity DSN] $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname; // Establecer opciones $options = [ PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ]; // Crear una nueva instancia PDO try { $this->bdd = new PDO($dsn, $this->user, $this->pwd, $options); } // Capturar errores 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 de datos datalib realmente existe. Debo señalar que estoy utilizando MariaDB en lugar de MySql.
Gracias por decirme dónde he cometido un error.
Atentamente
3 respuestas
Hola,
He encontrado que, como utilizo MariaDB, solo era necesario agregar en el DSN el puerto 3306.
$dsn = 'mysql:host=' . $this->host . ';port=3306;dbname=' . $this->dbname;
Gracias de nuevo a todos.
Atentamente
He encontrado que, como utilizo MariaDB, solo era necesario agregar en el DSN el puerto 3306.
$dsn = 'mysql:host=' . $this->host . ';port=3306;dbname=' . $this->dbname;
Gracias de nuevo a todos.
Atentamente
Hola,
Aparte del hecho de que posiblemente hayas escrito mal el nombre de tu base de datos... no veo...
¿Podrías hacer un SHOW DATABASE y pegarnos el resultado?
https://mariadb.com/kb/en/show-databases/
Asegúrate también de que tus archivos están bien codificados en UTF8 SIN BOM. Para no tener caracteres ocultos que compliquen las cosas
De paso:
- rowCount => Usar SOLO para consultas DELETE / INSERT / UPDATE pero en ningún caso para consultas SELECT (en su lugar, puedes hacer un COUNT en el fetchAll)
- Debes colocar las instrucciones prepare y execute en un bloque TRY/CATCH para ver los posibles errores.
--
Atentamente,
Jordane
Aparte del hecho de que posiblemente hayas escrito mal el nombre de tu base de datos... no veo...
¿Podrías hacer un SHOW DATABASE y pegarnos el resultado?
https://mariadb.com/kb/en/show-databases/
Asegúrate también de que tus archivos están bien codificados en UTF8 SIN BOM. Para no tener caracteres ocultos que compliquen las cosas
De paso:
- rowCount => Usar SOLO para consultas DELETE / INSERT / UPDATE pero en ningún caso para consultas SELECT (en su lugar, puedes hacer un COUNT en el fetchAll)
- Debes colocar las instrucciones prepare y execute en un bloque TRY/CATCH para ver los posibles errores.
--
Atentamente,
Jordane