Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como Mysql

[wordpress] Error establishing a database connection

Hola a todos. Trabajando aún con Wordpress, a veces me suele ocurrir el error del título:  Error establishing a database connection. Este mensaje nos aparece al acceder a cualquier parte de nuestro sitio de Wordpress, pues intenta conectarse a la base de datos (BD) y no lo consigue. Lamentablemente, no nos entrega más información detallada para poder saber la causa del fallo. La causa típica es que las credenciales para acceder a la base de datos, que debimos haber ingresado en el archivo wp-config.php , están incorrectas. Tal vez reemplazamos sin querer el archivo por otro antiguo, o pasamos a llevar una letra en el archivo actual. Si revisamos este archivo y lo corregimos usando los datos correctos de acceso a la BD, el problema estaría resuelto. Otra causa, un poco más errática, es que aun teniendo las credenciales correctas, sea la base de datos el problema. En ese sentido, podríamos tener distintos escenarios, tales como: - El servidor de base de datos está caído. En ese caso,...

[sql] Búsqueda por palabras en una frase

Holas de nuevo. Esta vez les he traído un tip especial para principiantes ultra novatos en desarrollo de consultas a bases de datos ^^. Se trata del método que uso para poder hacer consultas a una tabla, filtrando los resultados de acuerdo una frase de búsqueda. Usaré sentencias en TSQL y lenguaje PHP para hacer los ejemplos. Todos sabemos cómo hacer una consulta teniendo una palabra o frase exacta de búsqueda: SELECT * FROM tabla WHERE campo LIKE '%palabra o frase clave%'; Si queremos aplicar la palabra o frase de búsqueda en varias columnas, la sintaxis sería: SELECT * FROM tabla WHERE campo1 LIKE '%palabra o frase clave%' OR campo2 LIKE '%palabra o frase clave%'; ...añadiendo todas las columnas deseadas a continuación, siempre separando con el OR. Si hubiesen más condiciones de filtro, sería encapsular todos los elementos separados por OR, dentro paréntesis redondo: SELECT * FROM tabla WHERE campoX = 'valor' AND (campo1...

[mysql] Error 1005 (150) Cannot resolve table name close to

Holas! Acá estoy con otro tip para programadores trabajando en MYSQL. Para quienes les sea familiar el error "1005 Can't create table... (150)" al intentar crear una tabla en la base de datos, recordarán que este error se gatilla principalmente por una incorrecta escritura de la definición de los campos referenciados. Así por ejemplo, si tenemos la siguiente definición de una tabla padre: CREATE TABLE tablota (  campo1 VARCHAR(25) NOT NULL,   campor2 VARCHAR(150) NULL,  PRIMARY KEY(campo1) ) TYPE=InnoDB; Y la consiguiente definición de una tabla hija: CREATE TABLE tablita (  campoA VARCHAR(10) NOT NULL,   campor1 VARCHAR(15) NOT NULL,  PRIMARY KEY(campoA),  INDEX (campo1),  FOREIGN KEY (campo1)   REFERENCES tablota(campo1)   ON DELETE RESTRICT ON UPDATE CASCADE ) TYPE=InnoDB; Sabremos que esto nos arrojará error, ya que la definición del campo "campo1" en la "tablita" no está idéntico que la ...

[sql] WHERE campo IN (SELECT...)

Holas a todos. Dejo acá otro consejillo programadorístico, de nuevo relacionado con consultas a bases de datos. El caso es que en muchas ocasiones, como programadores, nos damos mucho trabajo en filtrar los datos que solicitamos a la base de datos, cuando el mismo servidor de la base nos puede hacer todo o gran parte del trabajo. No hablo de procedimientos ni funciones almacenadas, sino de meras consultas. En el día de hoy, abordaré un tip que puede ser de utilidad para los principiantes :) Herramienta a usar: Conector IN Cómo se usa: Tal como la palabra (en inglés) lo dice, este conector sirve para preguntar si el valor de la izquierda se encuentra contenido en la lista de valores de la derecha: campo IN (lista_de_valores) Si el valor de campo se encuentra a lo menos UNA vez, la comparación da Verdadero. En este sentido, tenemos dos formas de entregar la lista de valores a la consulta: a) Mediante una lista de valores constantes separados por coma. Ejemplos: ('r...

[mysql] Pasar array a parámetro de procedimiento almacenado (Mysql)

Me tocó hacer una consulta que retornaba una lista de items relacionados con una lista de usuarios que podían o no tener registros en común (vale decir, tabla de quiebre). La lista debía retornar siempre la lista de items, independiente de si había usuarios por los cuales consultar y/o si los usuarios tenían relación con ellos, pero debía mostrarme el status de los usuarios por cada item, de haberlos, esto es, una lista de nombres con una columna que podía estar vacía o no. Para el caso de tener que consultar los items relacionados con usuarios, al hacer la consulta utilizando un LEFT JOIN, me daba resultados si los usuarios tenían relación con los ítems, pero no si los usuarios no tenían items asociados pues, obviamente, al no estar relacionados, la consulta retorna vacío. Por ello, la solución era hacer la consulta de los items primero, y luego por cada item preguntar el status del usuario por cada uno. Para ello, tenía dos alternativas: hacerlo por programación o hacerlo por bas...

[mysql] Mysql Error 1264: Out of range value adjusted for column...

Holas! Antes que se me olvide, comentar este error y la forma que encontré en la documentación de Mysql para salvarlo. Este error, el 1264, ocurre cuando intentamos insertar (o actualizar) un campo con un valor que se pasa del rango permitido por la definición del tipo del campo. Por ejemplo, si definimos un campo como tipo TINYINT(3) UNSIGNED, y luego venimos tratando de insertarle un -3, Mysql nos reclamará, porque el -3 es un entero negativo, vale decir, está fuera del rango permitido del campo (que por ser TINYINY(3) UNSIGNED abarca todos los números enteros desde 0 a 255 no más). La verdad es que Mysql tiene unas cuantas variables de configuración, las cuales se cargan al iniciar el servidor de datos. Entre ellas está aquella que genera este "filtro". La variable se llama STRICT_TRANS_TABLES, y si consideramos que no necesitamos que el flujo normal de nuestra base de datos se interrumpa por este tipo de error, podemos sacarla del inicio (en el panel de Mysql Administ...