Articoli con Tag ‘MySQL’

Bachi di inizio anno: WordPress update e WPML get_page_by_path()

Il 2012 è iniziato con qualche ora di deep-debugging a causa di due (noti) bachi abbastanza fastidiosi. Il primo, tra l’altro abbastanza datato, presente nel core di WordPress che riguarda il metodo update() della classe wpdb, con la globale (e famosa) omonima istanza $wpdb. Il difetto appare quando si tenta di aggiornare un campo a NULL. Nonostante le numerose lamentele, il team di sviluppo WordPress sembra non trovare soluzione al fastidioso problema. Infatti, ad oggi, l’unica soluzione è quella di scriversi l’SQL per proprio conto.

Continua...

Very short trick: aggiustare le date tramite MySQL

Può capitare di trovarsi nell’impossibilità di modificare l’impostazione dell’orario su un Web Server o lavorare su una tabella MySQL dove un campo TIMESTAMP è impostato su ON UPDATE CURRENT_TIMESTAMP. Così diventa necessario, a fronte di una select, aggiustare l’orario recuperato con il fuso orario corretto. Ad esempio se il nostro server si trova a Los Angeles, con una fuso orario di 9 ore indietro, basta semplicemente utilizzare:

1
2
SELECT DATE_ADD( campo_timestamp, INTERVAL 9 HOUR) AS `local_timestamp`
FROM mytable

Il campo campo_timestamp contiene la data reale del server mentre l’alias local_timestamp è la stessa data 9 ore avanti.

Continua...

Very short trick: duplicare o clonare una o più righe in MySQL

Per duplicare totalmente il contenuto di una tabella su se stessa basta usare:

1
INSERT INTO MYTABLE SELECT * FROM MYTABLE

È possibile anche utilizzare la clausa di WHERE se necessario:

1
INSERT INTO MYTABLE SELECT * FROM MYTABLE WHERE a=b

Nel caso la tabella possiede qualche indice o chiave univoca, che provocherebbe un errore, è possibile filtrare i campi da duplicare:

1
INSERT INTO MYTABLE (field1, field2, ...) SELECT field1, field2, ... FROM MYTABLE

Addirittura è possibile duplicare un record e modificare un valore, ad esempio duplico un campo e gli aggiungo 1:

1
INSERT INTO MYTABLE (field1, field2, ...) SELECT (field1+1), field2, ... FROM MYTABLE

Continua...


Stop SOPA