mysqldump: Got error: 1045: Access denied for user »@’%’ (using password: YES) when using LOCK TABLES

Este error puede dar en caso de volcados de datos de mysql con el comando desde consola mysldump. En concreto:

mysqldump   -u <nombreDelUsuario> -h <IPDelServidor> -p <nombreDeLaBaseDeDatosAVolcar> backups/2012_11_30/<NombreDelFicheroDondeQuedanLosDatos>.sql

Resultado por pantalla:

mysqldump: Got error: 1045: Access denied for user ‘asist’@’%’ (using password: YES) when using LOCK TABLES

Más datos: el usuario ‘asist’ ya estaba dado de alta y con permisos. grant all….

¿Entonces?

En foros no conseguí solucionar el error. En uno comentaba apagar mysql y reiniciar, cosa que seguía sin funcionar.

Solución encontrada!

Añadir a mysqldump –single-transaction

mysqldump  –single-transaction  -u <nombreDelUsuario> -h <IPDelServidor> -p <nombreDeLaBaseDeDatosAVolcar> backups/2012_11_30/<NombreDelFicheroDondeQuedanLosDatos>.sql

Si la base de datos está en producción. Esta no es una buena solución. Se perderán todos los datos que en el momento del volcado se estén manipulando.

Cualquier comentario/sugerencia/mejora será de agradecer!! saludos!!

** Esta entrada tiene muchas visitas, por favor si no comentáis no sé si os ha servido, si está obsoleto, si funciona o qué, gracias!! **

 

Multi update MySQL

Aquí hay una solución a “Multi update mysql” sin romperse mucho la cabeza y sin programar.

Imaginemos que tenemos una tabla ‘grabaciones’ que tiene los campos ‘fecha_grabacion’ y ‘fecha_creacion’ y queremos hacer un update por cada grabacion de forma que la fecha de grabación pase a ser la fecha de creación.

Es hacer por cada fila:

update grabaciones set fecha_grabacion=’fecha de creacion de la grabacion id 1835’’ where grabacion_id=1835;

En esta imagen vemos en la pestaña “grabaciones” sus contenidos.

tabla_contenidos

Hacemos una query que con ‘CONCAT’ creemos el ‘UPDATE’ a partir de la query de las filas que queremos modificar:

select concat(‘update grabaciones set fecha_grabacion=\»,fecha_creacion,’\’ where grabacion_id=’,grabacion_id) from grabaciones where fecha_grabacion = ‘0000-00-00 00:00:00’;

Eso nos devuelve una única columna con updates. Como se muestra en la figura.

resultados mostrados en la query

La exportamos como texto, y ya tenemos nuestros comandos updates para aplicarlos.

update grabaciones set fecha_grabacion=’2012-10-08 09:55:44′ where grabacion_id=1775;
update grabaciones set fecha_grabacion=’2012-10-08 09:55:48′ where grabacion_id=1831;
update grabaciones set fecha_grabacion=’2012-10-08 09:55:48′ where grabacion_id=1835;
update grabaciones set fecha_grabacion=’2012-10-08 09:56:17′ where grabacion_id=2228;
update grabaciones set fecha_grabacion=’2012-10-08 09:56:43′ where grabacion_id=2573;
update grabaciones set fecha_grabacion=’2012-10-08 09:56:52′ where grabacion_id=2693;
update grabaciones set fecha_grabacion=’2012-10-08 09:57:00′ where grabacion_id=2806;
update grabaciones set fecha_grabacion=’2012-10-08 09:57:14′ where grabacion_id=3000;
update grabaciones set fecha_grabacion=’2012-10-08 09:57:20′ where grabacion_id=3081;
update grabaciones set fecha_grabacion=’2012-10-08 09:57:25′ where grabacion_id=3149;
update grabaciones set fecha_grabacion=’2012-10-10 19:30:46′ where grabacion_id=3326;

….

Ya está!

Para un resultado de más de 1000 updates, esta forma tardará mucho en ejecutarse, así que es mejor otras alternativas.

Comentar mejores opciones!! y si te parece interesante… compartir es vivir!

Gracias!

Cómo añadir entradas en wordpress con imágenes rápidamente.

Más bien, el título adecuado es «cómo hacer páginas web como churros». Y sino… atiende!

¿Tienes tu dominio de wordpress.com? Es decir, ¿ tienes tu blog de wordpress «con todo hecho»? ¿Utilizas capturas de pantalla (copiar y pegar)?

Yo tenía este problema, cargar fotos desde wordpress es un poco… «tedioso».

Bien! puede que este truco sea demasiado obvio, o que lo sabe todo el mundo. Pero seguro que hay alguien rezagado como yo.

La solución es Google Drive

 

En google Drive, puedes crear documentos de texto, con toda la funcionalidad que existen en editores de texto como: Microsoft Word, OpenOffice o LibreOffice.  Es decir, escribir texto, dar formato, insertar imágenes,  pegar capturas de pantalla o imágenes.Puedes crear tus entradas de blog perfectamente desde google drive.

Primero tienes que acceder a tu cuenta de google drive con los mismos datos de tu cuenta google.

http://drive.google.com

En el botón crear. Elegir documento de texto. Para más información, seguir este enlace.

http://support.google.com/drive/bin/answer.py?hl=es&answer=2424368

Ahora selecciona todo el texto del documento de google drive (cmd+A o Ctrl+A) y cópialo.

El último es en WordPress. Pega el texto en el mismo sitio donde añades la entrada.

Y listo!! las imágenes estarán bien enlazadas! sin tener que cargarlas previamente desde wordpress.

Si te estás riendo si… me enteré trasteando!! y tarde!!! y sino… compártelo!!

Gracias!!!

 

 

 

 

 

 

Cómo poner un logotipo genérico a un único informe de pentaho

Vamos a poner un icono corporativo al informe de Pentaho. De forma que no dependa el logotipo de la empresa del informe en sí, sino que dependa de la máquina en la que está instalada, es decir, empresas distintas.

Tenemos el Pentaho Report Designer 3.8 abierto, tal y como se muestra en la imagen.

Ponemos un objeto de tipo “image” arrastrando en el mismo informe. (El objeto “image” está en la barra de la izquierda).

Una vez que lo tenemos en el informe y seleccionado como en la imagen superior,  ponemos en “Attributes” http://127.0.0.1/logo.png.

Ahora en el servidor tendremos que alojar la imagen. ¿Dónde? Suponiendo que es una máquina Linux en /var/www.

Una vez subida por medio de scp, ya sea por un programa como WinSCP o por consola:
Ejemplo de subirlo por consola utilizando cygdrive:
scp /cygdrive/c/Users/llacarra.LW004/CarpetaDondeEstaGuardadoElLogo/logo.png root@192.168.X.XX:/var/www
Podemos comprobar si se visualiza bien si abrir el pentaho:
http://192.168.1.XX/logo.png

¿No funciona? ¿Sale un error 403? Entonces hay un problema de permisos. Si vas a la máquina donde se aloja el logo y cambias los permisos con esta instrucción:

chmod 0644 logo.png

¿Funciona otra vez? http://192.168.1.XX/logo.png

Pruebalo ya en pentaho report designer o desde la interfaz de usuario.

¡Ohhhh! preciosooo!!

Agradecimientos a www.diaple.com por los conocimientos adquiridos 😉

¿Te ha servido de algo esta información? Compártelo! ¿Está incompleta o no funciona? Por favor! Coméntalo para que se pueda mejorar.

Gracias!!


Cómo añadir un icono corporativo a una aplicación java y cambiar el icono por defecto de java

Hemos hecho  nuestra aplicación Java. Pero! en la esquina superior derecha y en la barra de programas ejecutándose tenemos el símbolo de Java.


¿Cómo añadimos el icono corporativo de la aplicación y cambiamos el icono por defecto de java?

Tenemos que ir al mismo Main de la aplicación, donde invocamos el JFrame.

Imaginemos que tenemos el Menú definido así.:

public class Menu extends javax.swing.JFrame{
}

Para incorporar el icono y el título

//Ponemos un icono a la aplicación
URL pathIcon = this.getClass().getClassLoader().getResource("openstreetmapexample/icon/earth.png");
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(pathIcon);
menu.setIconImage(img);
// Aprovechamos para ponerle el nombre de la aplicación
menu.setTitle("StreetFinder");

En stackOverFlow.com, no conseguí obtener la respuesta correcta. Todas las soluciones derivaban respecto a cómo obtener la url del icono. Por si queda alguna duda. Voy a mostrar una captura de dónde está el icono dentro del proyecto.

 

Y por fín el resultado!!

Cómo indexar tu blog de WordPress en google

Queridos bloggeros y bloggeras de los mundos de «WordPress con todo hecho». Tu blog aparece en búsquedas de google, porque así lo indican las estadísticas de WordPress. Pero, ¿está indexado con google?  Aunque parezca que sí, en esta entrada se explica cómo comprobar y realizar la indexación con google. Los resultados que obtendrás entre otros, es mejor indexación en google y mejores estadísticas desde la herramienta de google webmaster. ¿Te interesa?

1º paso: tienes una cuenta google, ¿no? Entramos en google web master tools:

https://www.google.com/webmasters/

2º Entrar en las herramientas: Aparecerá nuestro listado de web que ya han sido verificadas por google y/o cree google que son nuestras pero están sin verificar y/o tienes que añadir a mano. Vamos a añadir un nuevo sitio, como se ve en la primera imagen y observaremos que aparece en el listado (2º imagen).

 

añadir nuevo sitio

 

 

 

3º Proseguimos a verificarlas pulsando sobre el enlace «Verifica la propiedad de este sitio» y llegamos a la siguiente pantalla. Pulsamos sobre la pestaña «Métodos alternativos» para acceder a otras alternativas de indexar con google.

4ºSeleccionamos la opción de «Etiqueta HTML» y copiamos el contenido del campo de texto que aparece.

5º Nos vamos a nuestro blog. En concreto a las «Herramientas» -> «Herramientas disponibles».

6º Pegamos la etiqueta HTML en el cuadro de Google Web Master tools. Pulsamos sobre guardar cambios.

7º Volver a google webmaster que aparece en el paso 3º y pulsar en «verificar».

¿Funciona? ¿Y qué hemos conseguido? La siguiente imagen muestra el estado de indexación.

¿Diferencias? prueba a buscar el nombre de tu blog en google.

Espero que haya sido de utilidad!

Ejemplo JTabbedPane Java

Ejemplo de comandos básicos de JTabbedPane en Java.  Vamos a desactivar una pestaña de una JTabbedPane en función de su contenido y no en función del índice de las pestañas. Después activaremos y mostraremos esa pestaña junto con su contenido

 

Imaginemos que tenemos la siguiente ficha de la imagen.

Esta ficha ha sido elaborada por medio de las herramientas de Netbeans de diseño de interfaz y que ahora no pretendo entrar en detalle.
Simplificando esta imagen, vamos a considerar sólo dos pestañas (Datos económicos y materiales). Los componentes están inicializados:

pnlEconomicData = new es.diaple.fw.PanelAuto();

pnlEconomicData.setLayout(null);

lblCurrency.setText(«Moneda local»);

pnlEconomicData.add(lblCurrency);

lblCurrency.setBounds(30, 30, 80, 14);

pnlEconomicData.add(cmbCurrency);

cmbCurrency.setBounds(120, 20, 130, 30);

tabbedPane1.addTab(«Datos económicos», pnlEconomicData);

pnlCompaniesMaterials = new es.diaple.fw.PanelAuto();

jScrollPane1 = new javax.swing.JScrollPane();

tblCompaniesMaterials = new es.diaple.fw.Table();

pnlCompaniesMaterials.setLayout(new java.awt.BorderLayout());

tblCompaniesMaterials.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

{null, null, null, null},

{null, null, null, null},

{null, null, null, null},

{null, null, null, null}

},

new String [] {

«Title 1», «Title 2», «Title 3», «Title 4»

}

));

jScrollPane1.setViewportView(tblCompaniesMaterials);

pnlCompaniesMaterials.add(jScrollPane1, java.awt.BorderLayout.CENTER);

tabbedPane1.addTab(«Materiales», pnlCompaniesMaterials);

 

Para desactivar una pestaña inicialmente:

tabbedPane1.setEnabledAt(tabbedPane1.indexOfComponent(pnlCompaniesMaterials),false);

Para reactivar una pestaña y marcarla como seleccionada en función del panel.

tabbedPane1.setEnabledAt(tabbedPane1.indexOfComponent(pnlCompaniesMaterials),true);

tabbedPane1.setSelectedIndex(tabbedPane1.indexOfComponent(pnlCompaniesMaterials));

tabbedPane1.setEnabledAt(tabbedPane1.indexOfComponent(pnlCompaniesMaterials),true);

tabbedPane1.setSelectedIndex(tabbedPane1.indexOfComponent(pnlCompaniesMaterials));

Moraleja antes de ir a dormir:

Estas funciones se pueden hacer directamente poniendo el índice que en esos momentos estamos visualizando. Ejemplo: tabbedPane1.setSelectedIndex(1).  Evitar utilizarlo de esta manera.  Siempre hay problemas de mantenimiento, como por ejemplo en caso de cambiar el orden de las pestañas, si añadimos una nueva pestaña, etc.

Shortcuts Netbeans / Trucos de escritura Netbeans

EXPLICACIÓN SECUENCIA RESULTADO
Cómo auto-insertar bloque try catch. try { } ca + <tab> try{

} catch (Exception ex) {
ErrorManager.showExceptionDialog(ex);
}

Cómo auto-insertar get & set Ctrl + Ins    -> Abre diálogo para auto insertar y selecciona get & set o sólo get, o sólo set. public x getX(){
return this.x;
}

public setX(X x){
this.x = x;
}

Cómo auto-insertar constructores Ctrl + Ins Seleccionamos constructores public nombreClase(){

}

Shortcut public pu +<tab> public
Shortcut nombre de clases TMC + <Control><space> TableModelColumn Si escribes las mayúsculas te busca los ficheros que coinciden dichas mayúsculas o tienen más a la derecha.
Shortcut throws th + <tab> throws
Shortcut exception Ex + <tab> Exception
Shortcut false fa + <tab> False
Shortcut interface in + <tab> interface
Shortcut private pr + <tab> private
Cómo auto-insertar bloque if if + <tab> if (true) {

}

Cómo modificar tablas a UTF8 MySQL

Imaginemos una aplicación con la base de datos de mysql. En ella editamos información por ejemplo, de usuarios.

Todo es bonito y precioso.

Hasta! que decides exportar información a csv, hacer un volcado de datos y exportarlo a otra base de datos… etc.

¿Por qué? ¡Se ven mal los acentos, ñññññ y muchos caracteres!

Si estás en este caso, es que tienes mezclados los charset. Familiarizate con COLLATION y CHARSET.

http://dev.mysql.com/doc/refman/5.0/es/charset-mysql.html

Es mejor que utilices por compatibilidad UTF8.

Mysql por defecto crea collation a ‘latin1_swedish_ci’. Para arreglar los datos deberás hacer lo siguiente:

Si lo haces desde consola:

  1. Modificar la tabla

ALTER TABLE `caracteristicas_subtipos`
COLLATE=’utf8_general_ci’;

  1. Exportar los datos por medio de inserts Hacer truncate de la tabla.
    • Mediante volcado mysqldump -p –default-character-set=utf8  base_de_datos tabla_a_modificar > tabla_a_modificar.sql
  2. Volcar los datos.
    • Mediante mysql -p base_de_datos < tabla_a_modificar.sql

Si lo haces desde una herramienta de mysql:

Cambia sólo la forma de obtener los datos. Exporta los datos a INSERTS. Haz un truncate de la tabla. Antes de volcar los inserts pon la sentencia:

set names utf8;

FAQ:

Se puede hacer aplicado a todo un esquema?: No, tendrás que hacerlo tabla por tabla. Si alguien lo ha conseguido que lo comente!! sería un gran descubrimiento!

Agradecimientos:

A @rcasas  que me enseñó estas cosas tan chulas.

Error al crear icono de escritorio desde el jnlp Java

La situación: Al ejecutar el jnlp, se auto-creaba un icono en el escritorio.
Ahora: En actualizaciones se borra el icono y/o al descargarlo e instalarlo también.
Solución encontrada: Desinstalar la versión 7 de java. Volver a ejecutar el jnlp y comprobar que arranca con la versión 6 de java. Así, funciona.

Este error que no he conseguido solucionar por ahora y que al equipo de desarrollo nos está llevado más de un quebradero de cabeza, se ha tomado la postura cómoda de pensar que el error es de java 7. Posiblemente habrán cambiado alguna opción de configuración del jnlp o algo se está haciendo mal pero es muy extraño que el mismo jnlp, tras la actualización de java 7, no funcione correctamente.

No he encontrado ni en blogs,  google, ni las páginas oficiales de Oracle una solución mejor.

Al menos es una solución… Se agradece cualquier comentario o ayuda!