Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como Base de Datos

[phpMyAdmin] El almacenamiento de configuración phpMyAdmin no está completamente configurado...

Estaba trabajando en la página de Wordpress para mi cliente, en mi instalación local ( localhost ) y cuando se me ocurre actualizar un par de plugins de WP, todo se cae. Wordpress me da unos avisos horribles de que el usuario de base de datos de WP no tiene el privilegio para alterar la BD... Me sugiere reparar las tablas. Y cuando voy a phpMyAdmin (pMA), el administrador de la BD, éste me sale con el mensaje: El almacenamiento de configuración phpMyAdmin no está completamente configurado, algunas funcionalidades extendidas fueron deshabilitadas. Averigüe por qué. Le doy click al link de "Averigüe por qué" y me muestra un nuevo mensaje, que me informa que la "Configuración de pma ... no recibió el OK ". El primer mensaje me apareció en la pantalla de inicio de phpMyAdmin.  Pero yo primero lo vi (no exactamente el mismo) en la pestaña de Operaciones de la BD de WP... y sucesivamente en la pestaña de Operaciones de todas las BD. En este caso, me ofrecía crear las ta...

[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,...

[tsql] Error: La instrucción INSERT EXEC no se puede anidar

Holas a todos. Mientras programaba un procedimiento almacenado, intenté obtener los datos de otro procedimiento, como lo he venido haciendo desde que descubrí tamaña maravilla de la programación sql. Pero hoy me topé con este extraño error: La instrucción INSERT EXEC no se puede anidar . Tras investigar por algunos lados, di con la respuesta: no se puede almacenar en una tabla temporal de procedimiento almacenado, el resultado de otro procedimiento que también esté realizando una inserción de este tipo. Esto es algo como tener: CREATE PROCEDURE miProcedimiento AS  INSERT INTO #tablita EXEC otroProcedimiento;  SELECT * FROM #tablita; END; CREATE PROCEDURE nuevoProcedimiento AS  INSERT INTO #tabla1 EXEC miProcedimiento; END; Esto significará que si ejecuto: EXEC nuevoProcedimiento; ...SQL me arrojará el error antes mencionado. La solución al problema es no llamar a un procedimiento que esté llamando a otro ya en su interior. En algunos lados ...

[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...

[tsql] División da resultado INTEGER y se requiere que dé DECIMAL

Este es otro pequeño tip para programadores :) Si se han encontrado con este pequeño detalle al ejecutar una división en una consulta TSQL: SELECT 25 / 3; Resultado: 8 Y ustedes esperaban: 8.333 Pues la solución es bastante sencilla, ya que parte de la explicación a este comportamiento de TSQL (no lo he comprobado con Mysql). TSQL retorna el resultado de la operación en el mismo formato o tipo de datos en que vienen todos los operandos. Por lo tanto, si dividimos dos números enteros, el resultado también será un entero. Precisamente aquí es donde TSQL hace su magia no requerida: aproxima hacia abajo cualquier decimal (por no decir que hace un TRUNCATE al número, dejándonos sólo con la parte entera -_-). Por lo tanto, si queremos que el resultado nos muestre los decimales que corresponde, pues... ¡transforma tu número entero en un decimal! :D SELECT 25.0 / 3; Resultado: 8.333333 Voilà! ;D Si tu número viene en una variable, pues conviértelo a decimal y ya está: ...

[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...

[tsql] Formatos de Conversión de Fecha a Cadena en SQL Server

Holas! Hacía un tiempo había visto que en SQL Server se usa la función CONVERT() para formatear una fecha (y tal vez otros campos) a cadena. El formato para lograr esto en general es este: poniendo como ejemplo que quiero mostrar la fecha actual de la base de datos en la forma "aaaammdd" (año mes día, sin separaciones): > SELECT CONVERT(VARCHAR, GETDATE(), 112); Esto nos retornaría (en estos momentos) algo como esto: > 20101126 Analizando la función por partes, tenemos que: CONVERT() es, claro, la función. VARCHAR es el primer parámetro de la función e indica el tipo de datos en que queremos convertir el campo. GETDATE() es una función que retorna la fecha actual del servidor, pero para nuestros efectos acá ella está sólo ocupando el lugar de un campo tipo fecha, vale decir, este parámetro de la función es lo que queremos convertir. 112 es el formato en que queremos que el campo a convertir sea presentado; en este ejemplo, el código 112 convierte un cam...

[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...