MySQL GROUP_CONCAT no devuelve toda la información

Nos encontramos con el caso que en una query de MySQL nos damos cuenta que el GROUP_CONCAT que estamos haciendo de un campo no nos está devolviendo todos los valores que esperaríamos.

Después de investigar un poco, nos damos cuenta que está cortando el texto de salida a 1024 carácteres.

Solución: GROUP_CONCAT_MAX_LEN

Existe una variable de MySQL que justamente limita a un número de carácteres determinado la salida de un GROUP_CONCAT. Se trata de la variable: group_concat_max_len.

Como saber qué valor tiene en nuestro entorno

Para saber el valor de la variable group_concat_max_len en nuestro propio caso, haremos lo siguiente:

Como modificar el valor de esta variable

Entonces, lo que debemos hacer es aumentar el valor de esa variable para que no nos limite la salida:

o si queremos cambiarlo solo para nuestra sesión actual:

Si ha funcionado correctamente, nuestra variable de sistema habrá cambiado su valor al nuevo que hemos especificado.

Tenemos que tener en cuenta que este valor va a perderse cuando el servidor se reinicie. Por lo tanto, si nos interesa persistir este valor de forma indefinida en el servidor, tendremos que editar el fichero de configuración de MySQL y hacer la modificación de la variable group_concat_max_len desde allí, de modo que ante cualquier reinicio, el valor especificado será cargado como valor por defecto.

#1227 – Access denied; you need the SUPER privilege for this operation

Al intentar modificar este valor, puede ser que nos aparezca este mensaje de error. Algo bastante habitual si lo estamos intentando hacer en un servidor compartido. Esto pasa porque nuestro usuario no tiene suficientes privilegios para hacer tal cambio en el servicio de MySQL.

Si tienes posibilidad de ejecutarlo con un usuario con permisos, vuelve a intentarlo de esta forma. Sino, tendrás que hablar con el administrador del sistema para que hagan ellos el cambio. Y sino, no te queda otra que buscar un método alternativo en tus queries.

Desbloquear cuenta Drupal

Otra de las bondades de Drupal… Mensaje de error a la hora de autenticarte como usuario:

Aplicación bloqueada por la seguridad de Java

Una aplicación bloqueada por la seguridad de Java? Has actualizado recientemente Java? Así lo he solucionado.

Actualizar Java

Actualizar la versión de Java instalada en un PC es garantía de problemas sí o sí. Ahora desde Oracle, los encargados de Java son especialistas en dar trabajo a los informáticos de sistemas (será para garantizarles que siempre tengan trabajo?)

El caso es que ayer actualicé la versión de Java (ERROR!) cansado ya de los avisos y de applets bloqueados en webs.

Actualización instalada de forma rápida, y aparentemente sin ningún problema! Parece que empiezan a mejorar algo…

Aplicación bloqueada por la seguridad de Java

Por la tarde tuve que ejecutar una aplicación importante que tenemos en producción en la empresa, y…

Su configuración de seguridad ha bloqueado la ejecución de una aplicación porque falta un atributo de manifesto “Permisos” en el jar principal.

Así que toca perder el tiempo (que no nos sobra precisamente…) para conseguir ejecutar la aplicación con la (mierda de) nueva versión de Java…

Error del atributo de Permisos

El error en cuestión que da Java para no ejecutar la aplicación, es porque no existe en el archivo de manifesto de la aplicación java, un atributo llamado Permisos. En este atributo es donde la aplicación solicita el nivel permisos que requiere para ejecutarse.

El hecho de que no esté especificado, es motivo para Java para bloquear la aplicación.

Desbloquear aplicación de Java

Si estamos en un entorno Windows, lo que tendremos que hacer es permitir que se ejecuten las apps de una dirección web concreta.

  1. Botón inicio, y buscamos “Configurar Java”.
  2. Seleccionamos la aplicación encontrada, donde tenemos los parámetros de administración de Java. Atención en hacerlo así, y NO desde el panel de control. En mi caso, al abrirlo desde el Panel de Control (que es lo que a uno se le ocurre directamente) la ventana de configuración que te abre es distinta, y por ejemplo en el apartado de Seguridad no te da las opciones que vamos a necesitar modificar. Se trata de configuraciones distintas:

    Administrar Java

    A la izquierda la que se nos abre desde el Panel de Control, a la derecha la ventana de “Administrar Java” escrita en el buscador del menú de inicio de Windows (la que nos interesa).

  3. Pestaña Seguridad, veremos abajo “Lista de excepciones de sitio“. Seleccionamos el botón del lado “Editar lista de sitios…
  4. Añadimos la dirección desde donde se ejecuta la app de java que se nos ha bloqueado, y aceptamos.PanelDeControlJava3
  5. Probamos de volver a ejecutar la App y ya no debería volver a tener problemas.

En mi caso la primera vez me ha salido una advertencia de seguridad que he aceptado, pero luego NO me ha abierto la app.

Captura Aunque al segundo intento de ejecutarla (y siguientes), me la ha abierto sin problemas, tal y como se había abierto siempre antes de la magnífica actualización de Java.

Por fin el funcionamiento vuelve a ser el habitual. Problema resuelto, hasta dentro de una semana que salga una nueva actualización de Java!

Error al instalar librería XML de R

Al instalar la librería “XML” de R en un Ubuntu Server, ya sea mediante:

o desde la línea de comandos mediante:

el proceso no se completa, dando el siguiente error:

Solución:

Para poder instalar y ejecutar el package XML de R, hace falta el paquete libxml2-dev, por lo que lo instalaremos mediante apt-get:

Después de esto, volvemos a provar de instalar, desde la consola de R:

y el proceso se completa sin ningún otro problema.

Solo funciona portada de Drupal

Al finalizar la migración de una página Drupal a un nuevo servidor, podemos ver la portada de la página con todo su contenido, pero a la que vamos a cualquier link no funciona ninguno, dando un error 404.

Solución:

Las primeras cosas que leí, apuntaban a que el site de Drupal (versión 7) tenía las URL limpias activadas, y cabía la posibilidad que el apache del nuevo servidor no tuviera activado el módulo mod_rewrite, necesario para que funcionen las URL limpias. No obstante, después de hacer las comprovaciones el módulo estaba activado. De hecho, en el mismo servidor había ya otras dos instalaciones Drupal funcionando correctamente.

En mi caso, el problema vino porque en el directorio /etc/apache2/conf.d/ había el fichero de configuración drupal.conf. En este fichero parece ser que es donde se especifica el funcionamiento del módulo mod_rewrite para Drupal. Y lo más importante, es que tiene que haber una entrada para cada uno de los sites de Drupal (lo que nos permite una configuración distinta para cada sitio del servidor). Entonces, solucionamos el tema añadiendo la configuración de mod_rewrite para el nuevo site de Drupal en el fichero drupal.conf.

En mi caso fue algo así como replicar el contenidor que ya habñia para cada sitio Drupal del servidor:

En negrita marcado lo único que cambié de un site al otro (el nombre del sitio)

Han desaparecido todas las impresoras de la carpeta de impresoras del sistema

Al intentar imprimir desde un programa, da error diciendo que no tenemos seleccionada una impresora por defecto.

Al mirar a la carpeta de impresoras del sistema, vemos que han desaparecido todas las impresoras, no hay ninguna.

Solución:

Esto pasa porque se ha producido un error con el servicio de cola de impresión y o o bien ha dejado de funcionar correctamente, o está parado. Por lo que debemos volverlo a iniciar. El servicio como tal es spoolsv.exe (en Win XP lo encontramos en la carpeta C:WINDOWSsystem32).

Podemos reiniciarlo desde Panel de control > Herramientas Administrativas > Servicios. En la lista buscamos el servicio ‘Cola de impresión‘. Botón derecho y damos a ‘iniciar‘.

En nuestro caso, por alguna razón no aparecía el servicio en la lista de servicios, así que buscamos un método alternativo. En este caso fue iniciar el servicio desde línea de comandos:

  1. Abrimos línea de comandos de Windows (Botón inicio, y en ejectar escribimos ‘cmd‘ y pulsamos Enter)
  2. Ejecutamos el comando:

Hecho esto, vuelven a aparecer todas las impresoras en la lista de impresoras del sistenma, y todo vuelve a funcionar perfectamente.

Cambiar MAC address de una tarjeta Ethernet

Después de reiniciar el PC, no hay manera que este se conecte a Internet, ni tan solo a la red local.

Solución:

Mediante ipconfig /all, vemos que la MAC Address de la tarjeta ethernet es 00:10:18:00:00:00, y que la dirección IP que se le ha asignado desde el servidor DHCP no tiene un formato correcto.

Con esto ya vemos que la dirección MAC no tiene un valor demasiado normal, por lo que parece que la tarjeta ha perdido su dirección original (nunca lo había visto…). Teniendo en cuenta que en nuestra red a los equipos se les asigna una dirección IP en función de su dirección MAC, ya vemos el motivo por el cual no tenemos Internet…

Entonces, la solución pasa por reestablecer la dirección MAC de la tarjeta de red a su numeración inicial. Para hacer eso, seguimos los siguientes pasos:

  1. Administrador de Dispositivos‘, y seleccionamos la tarjeta ethernet correspondiente. Botón derecho, y hacemos click en ‘Propiedades’.
  2. Nos dirigimos a la pestaña ‘Opciones avanzadas
  3. En la lista de propiedades, buscamos la propiedad ‘Network Address
  4. En su derecha, escribimos la nueva dirección que le queremos asignar.
  5. Aceptamos los cambios para que se guarden.
  6. Teoricamente, se dice que hay que reiniciar el PC para que estos cambios hagan efecto en la configuración de la tarjeta ethernet. En mi caso no hizo falta…
  7. Podemos asegurarnos de si se ha hecho o no el cambio, haciendo otra vez ipconfig /all desde la línea de comandos.

Función from_unixtime con valores negativos

Usando la función from_unixtime() de MySQL, devuelve un valor NULL cuando todo parece estar correcto, y el campo pasado por parámetre existe.

Solución:

Parece ser que la función from_unixtime() de MySQL no acepta valores de unixtime negativos (anteriores al 01/01/1970). Y en el caso de que se le pase un valor negativo, devuelve NULL.

Una solución para estos casos consiste en hacer una suma de fechas, con la función date_add() de timestamp(0) más el valor de la fecha negativo, es decir:

Error en la importación de bases de datos

Tenemos una base de datos MySQL vacía, e intentamos importar mediante un script de exportación generado desde otro servidor MySQL, toda una base de datos, tanto estructura como datos. Subimos el script de importación desde desde PhpMyAdmin, y no se crea ni una tabla, dándonos el siguiente error:

Solución:

El error viene provocado por unas sentencias que hay en el inicio del fichero de importación, que se encargan de guardar los valores de determinadas variables globales del servidor de SQL, para reestablecer su valor una vez terminada la importación. En según que versiones de MySQL, estas variables todavía no existían (por ejemplo, la variable CHARACTER_SET_CLIENT solo está disponible a partir de la versión 5 de MySQL).

Para evitar este error, o bien actualizamos a una versión más reciente el sevidor MySQL (que ya iría siendo hora…) si tenemos tiempo y nos es posible, o sino borramos estas sentencias conflictivas. Si elegimos borrar las sentencias, hay que tener en cuenta que también tendremos que borrar las instrucciones del final del fichero, donde se reestablecen los valores que estas variables tenían antes de la importación.

Las sentencias del inicio del documento:

Las del final del documento:

Despues de haber hecho estas modificaciones en el fichero .SQL de la importación, probamos de hacer la importación de nuevo, y ahora ya no nos dará ningún error.