Archivio

Archivio per la categoria ‘MySQL, DB Server’

AAA- Redattori Cercasi

23 January 2007 maxgrante Nessun commento

Ciao a tutti,
nonostante il blog abbia avuto un buon successo in termini di visite e riscontri mi piacerebbe che qualche altro volontario si proponga come redattore di articoli inerenti alle categorie del blog.
Naturalmente è anche possibile aprire rubriche di altro genere oltre al mondo Opensource e piattaforma LAMP.

Se volete contattatemi a info@massimo-caselli.com .

Oppure: http://www.massimo-caselli.com/contacts/

In cambio il blog vi offrirà  visibilità  e uno spazio dedicato al vostro curriculum vitae.

Maxgrante
info[AT]massimo-caselli[DOT]com

MySQL, Strict Mode

3 November 2006 maxgrante 2 commenti

In questo breve articolo vi segnalo una nuova funzionalità  di mysql, disponibile dalla versione 5 in poi, che impatta su alcuni comportamenti di base del server mysql.
La configurazione in questione è quella riguardante lo strict mode.
Non mi soffermo su come sconfigurare, configurare etc… visto che la pagina del manuale di mysql è quanto di più preciso possibile:

http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html

Mi soffermo invece sugli aspetti problematici che comporta.
Aver attiva questa configurazione comporta in pratica la necessità  di gestire al meglio i dati che vengono inviati al database come query SQL.
In sostanza, portando un paio di esempi accade che se viene impostato un campo di tipo DATE come NOT NULL, sarà  necessario passare una data ASSOLUTAMENTE corretta e valida, altrimenti il database ritorna query failed.

Stessa cosa dicasi per campi varchar a lunghezza di (esempio) 50 caratteri, in cui se viene passata una stringa di 51 caratteri si ottiene un errore e non avviene il solito truncate della stringa che opera mysql alla lunghezza massima del campo stesso.

La mia personale opinione è che tale introduzione sicuramente aumenta il livello di sicurezza e di “pulizia” del codice ma indubbiamente oltre a comportare una maggiore difficoltà  nella progettazione del codice dell’applicazione e dell’interfacciamento con il database, comporta anche la non completa funzionalità  di moltissime vecchie applicazioni.

Ergo, consiglio l’attivazione su macchine dedicate su cui si realizzano nuove applicazioni ma sconsiglio l’utilizzo di strict mode su macchine che ospitano applicazioni vecchie o scritte da chissà  chi (es. server di hosting etc…)

Ciao. Maxgrante
info[AT]massimo-caselli[DOT]com

Spostamento hosting massimo-caselli.com

30 August 2006 maxgrante 2 commenti

Ciao a tutti,
dopo dieci mesi di eccellente hosting fornito da www.serverplan.com mi accingo a migrare il dominio su www.hostdeck.com che promette fuoco e fiamme! :-D
Nelle prossime ore potrebbero esserci alcuni problemi.

Scusatemi per il disagio dovuto alla volontà  di migliorare ulteriormente il sito web e la sua fruibilità .

Ciao. Maxgrante
info[AT]massimo-caselli.com

MySQL, sito web in versione italiana

12 April 2006 maxgrante Nessun commento

Ciao a tutti,
da ieri è finalmente disponibile online il sito di mysql in italiano.

Per accedere al sito: www-it.mysql.com

Purtroppo ancora la documentazione riporta il link al sito in inglese ma è comunque un passo in avanti importante e a dimostrazione della grandissima crescita di mysql.

Ciao. Max
info[AT]massimo-caselli[DOT]com

Query di INSERT in MySQL Server (SQL)

31 March 2006 maxgrante Nessun commento

Prima di partire per un giro nella “tranquilla” :-) Parigi scrivo breve articolo per spiegare diverse modalità  con cui scrivere query di INSERT in mysql e in generale con il linguaggio SQL.
Per inserire i dati in mysql abbiamo sostanzialmente tre possibili differenti sintassi in
INSERT.

Di seguito vi allego la sintassi come da manuale:

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},…),(…),…
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
Or:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, …
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
Or:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT …

Semplificando quanto fornito dal manuale di mysql vediamo insieme il funzionamento
di INSERT con degli esempi pratici che andrete ad eseguire sul nostro progettino:

Prendiamo per esempio una tabella con campi:
IDfornitore (PK) auto incrementale
fornitore varchar (200)
INSERT INTO fornitore VALUES (”, ‘Eforhum.it’);

Attenzione: in mysql 5 usare la seguente sintassi:

INSERT INTO fornitore VALUES (NULL, ‘Eforhum.it’);

Questo perchè mysql 5 non accetta più valori per la chiave primaria autoincrement numerica passati come ” dove si intende valore presente ma blank, vuole assolutamente NULL, ovvero valore NON presente.

Sostanzialmente utilizzando questa sintassi possiamo dire che la query “passa†alla
tabella “fornitore†i valori da inserire in ordine di campo.

Il vantaggi di usare questa sintassi di INSERT sono:

VANTAGGI:
1. Velocità  di esecuzione
2. SQL molto scarno e rapido da scrivere

SVANTAGGI:
1. Bisogna conoscere molto bene i campi della tabella e l’ordine in cui sono messi
2. In caso di modifiche al DB bisogna sistemare subito le query
3. Lettura della query abbastanza difficile

INSERT INTO fornitore (IDfornitore, fornitore) VALUES (”, ‘Eforhum.it’);

Come possiamo notare che l’unica cosa che cambia è la definizione dell’ordine dei
campi in cui mysql inserirà  i valori.

VANTAGGI:
1. Buona velocità  di esecuzione delle query
2. In caso di modifiche al DB (anche se è fondamentale aggiornare le query) non si
rischia di incorrere in inserimenti errati. Stesso discorso vale per l’ordine dei campi
che se cambia non inficia sulla validità  della query.

SVANTAGGI:
1. Non di facile lettura

INSERT INTO fornitore SET fornitore = ‘eforhum.it’;
Con questa sintassi possiamo notare che vengono associati campo = valore

VANTAGGI:
1. Se viene cambiato il DB o l’ordine dei campi le query non portano ad errori di
inserimento (a meno che non si siano eliminate delle colonne)
2. Facilità  di lettura SQL di INSERT

SVANTAGGI:
1. SQL forse un pà ridondante
Approfondite le varie sintassi possiamo facilmente dedurre che la soluzione migliore è
di utilizzare l’SQL di INSERT che prevete il setting di campi = valore, questo sia per
facilità  di lettura che per leggibilità  dell’SQL.
Infatti se immaginiamo una tabella di 30/40 campi le prime due opzioni non
garantiscono una facile lettura per l’individuazione di eventuali errori.

Ciao a tutti, Maxgrante
info[AT]massimo-caselli[DOT]com