<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux, PHP, MySQL, Windows, C# &#187; mysql</title>
	<atom:link href="http://www.massimo-caselli.com/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.massimo-caselli.com</link>
	<description>Articoli, news e pillole sul mondo LAMP e l&#039;opensource. Pillole di C#</description>
	<lastBuildDate>Mon, 30 Jan 2012 15:36:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Benchmark MySQL Connector NET Vs DevArt DotConnect For MySQL</title>
		<link>http://www.massimo-caselli.com/2011/12/30/benchmark-mysql-connector-net-vs-devart-dotconnect-for-mysql/</link>
		<comments>http://www.massimo-caselli.com/2011/12/30/benchmark-mysql-connector-net-vs-devart-dotconnect-for-mysql/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 17:23:07 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[Linq]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[devart]]></category>
		<category><![CDATA[dotconnect]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql connector net]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=301</guid>
		<description><![CDATA[Era da un po&#8217; di tempo che mi chiedevo se l&#8217;implementazione di Linq To SQL per mysql di DevArt fosse più efficiente o meno dell&#8217;alternativa di casa mysql. Ho quindi deciso di farmi in casa un benchmark che, sebbene effettuato in modo piuttosto grossolano e rapido ha dato dei risultati abbastanza netti. Il test è [...]]]></description>
			<content:encoded><![CDATA[<p>Era da un po&#8217; di tempo che mi chiedevo se l&#8217;implementazione di Linq To SQL per <a target="_blank" href="http://www.mysql.com">mysql</a> di <a title="http://www.devart.com/dotconnect/mysql/" href="http://www.devart.com/dotconnect/mysql/" target="_blank">DevArt</a> fosse più efficiente o meno dell&#8217;alternativa di casa <a title="http://www.mysql.com/downloads/connector/net/" href="http://www.mysql.com/downloads/connector/net/" target="_blank"><a target="_blank" href="http://www.mysql.com">mysql</a></a>.</p>
<p>Ho quindi deciso di farmi in casa un <strong>benchmark </strong>che, sebbene effettuato in modo piuttosto grossolano e rapido ha dato dei <strong>risultati abbastanza netti</strong>.<br />
Il test è stato eseguito con le seguenti condizioni (da qui capirete che è abbastanza spartano come benchmark):</p>
<ul>
<li>Windows 7 64 BIT</li>
<li><a target="_blank" href="http://www.mysql.com">mysql</a> 5.1.x 64 BIT per Windows</li>
<li>.NET Framework 4.0</li>
<li>Utilizzato Cassini al posto di IIS</li>
<li>DevArt versione 6.30.185.0</li>
<li><a target="_blank" href="http://www.mysql.com">mysql</a> Connector NET versione 6.4.4</li>
</ul>
<p>In pratica ho lanciato <strong>due procedure separate con la mia macchina nelle stesse condizioni di lavoro</strong> e a distanza di pochissimo tempo, quindi applicativi aperti, musica che suona e via discorrendo <img src='http://www.massimo-caselli.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Il test era suddiviso in due componenti, <strong>l&#8217;esecuzione di 1.000 query su una tabella con campo indicizzato passandogli un valore randomico</strong> e <strong>l&#8217;inserimento di 1.000 record sempre con valori randomici</strong>.<br />
In particolare <strong>l&#8217;inserimento prevedeva il COMMIT ad ogni STATEMENT</strong> perché altrimenti non si notava alcuna differenza di performance tra i due drivers.</p>
<p>Di seguito i risultati nudi e crudi:</p>
<p><strong><a target="_blank" href="http://www.mysql.com">mysql</a> (utilizzo 27%/30% CPU poi sceso in insert a 13%/15%) 6.4.4</strong></p>
<ul>
<li>Data avvio select: 30/12/2011 18:12:03</li>
<li>Data fine select: 30/12/2011 18:12:31</li>
<li>Data avvio insert: 30/12/2011 18:12:31</li>
<li>Data fine insert: 30/12/2011 18:12:43</li>
</ul>
<p><strong>DevArt (utilizzo 27%/31% CPU in insert a 13%/17%) 6.30.185.0</strong></p>
<ul>
<li>Data avvio select: 30/12/2011 18:13:21</li>
<li>Data fine select: 30/12/2011 18:13:38</li>
<li>Data avvio insert: 30/12/2011 18:13:38</li>
<li>Data fine insert: 30/12/2011 18:13:44</li>
</ul>
<p>Tempo SELECT <strong><em>MySQL: 28 secondi</em></strong><br />
Tempo SELECT <strong><em>DevArt: 17 secondi</em></strong></p>
<p>Tempo INSERT <strong><em>MySQL: 12 secondi</em></strong><br />
Tempo INSERT <strong><em>DevArt: 6 secondi</em></strong></p>
<p>Direi che è abbastanza chiaro che, a parte una <strong><em>lieve differenza nell&#8217;utilizzo della CPU (in favore del driver <a target="_blank" href="http://www.mysql.com">mysql</a> Connector NET meno esoso)</em></strong>, la velocità di esecuzione sia delle SELECT che delle INSERT è <strong>nettamente in favore di DevArt</strong>.</p>
<p>Morale, bene così, almeno non ho toppato driver per un importante progetto che sto sviluppando! <img src='http://www.massimo-caselli.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2011/12/30/benchmark-mysql-connector-net-vs-devart-dotconnect-for-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parametro tmp dir MySQL, attenzione allo spazio</title>
		<link>http://www.massimo-caselli.com/2010/02/16/parametro-tmp-dir-mysql-attenzione-allo-spazio/</link>
		<comments>http://www.massimo-caselli.com/2010/02/16/parametro-tmp-dir-mysql-attenzione-allo-spazio/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 19:00:51 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Linux, Opensource]]></category>
		<category><![CDATA[MySQL, DB Server]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[tmpdir]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=184</guid>
		<description><![CDATA[Nella configurazione di mysql (mi pare anche nella standard da RPM delle redhat based) non viene configurato il parametro il parametro: tmpdir che normalmente assume il valore di default del sistema. Su Linux naturalmente /tmp. Qualora per motivi di spazio o banalmente convinti che la /tmp non sia necessario renderla di ampie dimensioni, potrebbe accadere [...]]]></description>
			<content:encoded><![CDATA[<p>Nella configurazione di <a target="_blank" href="http://www.mysql.com">mysql</a> (mi pare anche nella standard da RPM delle redhat based) non viene configurato il parametro <strong>il parametro: tmpdir</strong> che normalmente assume il <strong>valore di default del sistema</strong>. Su Linux naturalmente /tmp.</p>
<p>Qualora per motivi di spazio o banalmente convinti che la /tmp non sia necessario renderla di ampie dimensioni, potrebbe accadere che durante certe <strong>operazioni molto pesanti su tabelle con quantitativi di record notevoli</strong>, il sistema <strong>esaurisca lo spazio nella partizione temporanea</strong> durante la fase di elaborazione dati e scrittura di una tmp table, proprio su questa partizione.</p>
<p>La <strong>query abortira&#8217;</strong> con un messaggio del tipo no space left on device o qualcosa del genere.</p>
<p>In tal caso andra&#8217; allargata la partizione tmp di sistema (o dove si appoggia <a target="_blank" href="http://www.mysql.com">mysql</a>) o in alternativa cambiato il path (che deve essere scrivibile dallo user &#8220;<a target="_blank" href="http://www.mysql.com">mysql</a>&#8220;), fermato il servizio <a target="_blank" href="http://www.mysql.com">mysql</a> e riavviato.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2010/02/16/parametro-tmp-dir-mysql-attenzione-allo-spazio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Potenziale SQL Injection con AdoDB e driver mysqli</title>
		<link>http://www.massimo-caselli.com/2008/12/29/sql-injection-con-adodb-estensione-mysqli/</link>
		<comments>http://www.massimo-caselli.com/2008/12/29/sql-injection-con-adodb-estensione-mysqli/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 21:59:42 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Apache, Webserver]]></category>
		<category><![CDATA[MySQL, DB Server]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[adodb]]></category>
		<category><![CDATA[adodb mysqli]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqli]]></category>
		<category><![CDATA[sql injection]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=156</guid>
		<description><![CDATA[[SEGNALO CHE HO SCOPERTO QUESTA COSA DA POCO E LIMITANDOMI AD ALCUNI TEST E PROVE VELOCI MA REALI, PERCUI OGNI EVENTUALE APPROFONDIMENTO/SMENTITA ETC... E' BEN ACCETTO] Segnalo una problematica di sicurezza abbastanza importante per coloro che utilizzano adodb utilizzando il driver mysqli (le nuove funzioni di connessione con mysql native in php 5). In sostanza [...]]]></description>
			<content:encoded><![CDATA[<p>[SEGNALO CHE HO SCOPERTO QUESTA COSA DA POCO E LIMITANDOMI AD ALCUNI TEST E PROVE VELOCI MA REALI, PERCUI OGNI EVENTUALE APPROFONDIMENTO/SMENTITA ETC... E' BEN ACCETTO]</p>
<p>Segnalo una <strong>problematica di sicurezza abbastanza importante</strong> per coloro che utilizzano <strong><a title="Adodb" href="http://adodb.sourceforge.net/" target="_blank">adodb </a>utilizzando il driver mysqli</strong> (le nuove funzioni di connessione con <a target="_blank" href="http://www.mysql.com">mysql</a> native in <a target="_blank" href="http://www.php.net">php</a> 5).</p>
<p>In sostanza le nuove funzioni mysqli consentono mediante la seguente funzione: <a title="mysql multi query" href="http://it.php.net/manual/en/mysqli.multi-query.php" target="_blank">mysqli_multi_query</a> di poter <strong>eseguire più statement SQL in <a target="_blank" href="http://www.mysql.com">mysql</a></strong> come ad esempio:</p>
<p><em>SELECT * FROM TBL1 WHERE id = 1; DROP table TBL2;</em></p>
<p>Questa query utilizzando le <strong>vecchie librerie <a target="_blank" href="http://www.mysql.com">mysql</a> (es. mysql_connect) dava errore</strong>.<br />
La possibilità di <strong>eseguire più query SQL è supportata su <a target="_blank" href="http://www.mysql.com">mysql</a> 5.0.x anche da command line</strong>, non saprei se anche vecchie versioni lo consentivano.</p>
<p>Questo significa che se per esempio utilizziamo in <a target="_blank" href="http://www.php.net">php</a> una query del tipo:</p>
<p><em>$sql = &#8220;SELECT * FROM tbl1 WHERE id = $_GET['id']&#8220;; // (Premesso che venga come minimo fatto l&#8217;escape dei caratteri come &#8216; o &#8220;)</em></p>
<p>Possiamo rischiare che qualche burlone passi in GET il seguente valore:<br />
<em>&#8220;1; DROP TABLE tbl2;&#8221;</em><br />
Il che comporterebbe che l&#8217;SQL eseguito sia:</p>
<p><em>SELECT * FROM TBL1; DROP table TBL2;</em></p>
<p>Di fatto quindi con AdoDB con driver mysqli, la seconda query viene effettivamente eseguita.</p>
<p>Diventa quindi <strong>essenziale fare un controllo sull&#8217;input dell&#8217;utente per $_GET['id']</strong>. Ad esempio verificando che sia un numero intero.</p>
<p><strong>La soluzione più rapida è quella di cambiare la connect di AdoDB dicendogli di usare il driver <a target="_blank" href="http://www.mysql.com">mysql</a></strong> anziché mysqli, la soluzione migliore e da fare comunque resta <strong>in ogni caso il filtraggio di tutti i dati in input.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2008/12/29/sql-injection-con-adodb-estensione-mysqli/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQL 5.1 GA, attenzione a possibili bug fatali</title>
		<link>http://www.massimo-caselli.com/2008/12/03/mysql-51-ga-attenzione-a-possibili-bug-fatali/</link>
		<comments>http://www.massimo-caselli.com/2008/12/03/mysql-51-ga-attenzione-a-possibili-bug-fatali/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 08:30:06 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[MySQL, DB Server]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[bug mysql]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql 5.1]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=154</guid>
		<description><![CDATA[Di seguito l&#8217;articolo in italiano di Punto Informatico: http://punto-informatico.it/2494271/PI/News/mysql-51-una-falsa-partenza.aspx E qui l&#8217;articolo ufficiale in lingua inglese di Michael Widenius ex CTO della mysql AB acquistata tempo fa da SUN. http://monty-says.blogspot.com/2008/11/oops-we-did-it-again-mysql-51-released.html Io per adesso rimango sul 5.0 sul quale onestamente ho avuto pochi problemi.]]></description>
			<content:encoded><![CDATA[<p>Di seguito l&#8217;articolo in italiano di Punto Informatico:</p>
<p><a title="MySQL 5.1 bugs" href="http://punto-informatico.it/2494271/PI/News/mysql-51-una-falsa-partenza.aspx" target="_blank">http://punto-informatico.it/2494271/PI/News/mysql-51-una-falsa-partenza.aspx</a></p>
<p>E qui l&#8217;articolo ufficiale in lingua inglese di Michael Widenius ex CTO della <a target="_blank" href="http://www.mysql.com">mysql</a> AB acquistata tempo fa da SUN.</p>
<p><a title="Michael Widenius post MySQL 5.1" href="http://monty-says.blogspot.com/2008/11/oops-we-did-it-again-mysql-51-released.html" target="_blank">http://monty-says.blogspot.com/2008/11/oops-we-did-it-again-<a target="_blank" href="http://www.mysql.com">mysql</a>-51-released.html</a></p>
<p>Io per adesso rimango sul 5.0 sul quale onestamente ho avuto pochi problemi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2008/12/03/mysql-51-ga-attenzione-a-possibili-bug-fatali/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL 5, utilizzo dei TRIGGER</title>
		<link>http://www.massimo-caselli.com/2008/07/11/mysql-5-utilizzo-dei-trigger/</link>
		<comments>http://www.massimo-caselli.com/2008/07/11/mysql-5-utilizzo-dei-trigger/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 18:18:58 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[MySQL, DB Server]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[automatizzazione processi]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[db server]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[trigger]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=130</guid>
		<description><![CDATA[Finalmente trovo il tempo di pubblicare un articolo&#8230; Vediamo di seguito l&#8217;utilizzo dei TRIGGER in mysql 5, se non dico male infatti sino alla versione 5.0.x i TRIGGER su mysql non erano disponibili. Prima di tutto, a cosa servono i TRIGGER? I TRIGGER hanno il principale scopo di automatizzare determinate operazioni sul database all&#8217;occorrenza di [...]]]></description>
			<content:encoded><![CDATA[<p>Finalmente trovo il tempo di pubblicare un articolo&#8230; <img src='http://www.massimo-caselli.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Vediamo di seguito l&#8217;utilizzo dei <strong><a target="_blank" href="http://dev.mysql.com/doc/refman/5.0/en/triggers.html">TRIGGER</a> in <a target="_blank" href="http://www.mysql.com">mysql</a> 5</strong>, se non dico male infatti sino alla versione 5.0.x i <a target="_blank" href="http://dev.mysql.com/doc/refman/5.0/en/triggers.html">TRIGGER</a> su <a target="_blank" href="http://www.mysql.com">mysql</a> non erano disponibili.</p>
<p>Prima di tutto, a cosa servono i <a target="_blank" href="http://dev.mysql.com/doc/refman/5.0/en/triggers.html">TRIGGER</a>? I <a target="_blank" href="http://dev.mysql.com/doc/refman/5.0/en/triggers.html">TRIGGER</a> hanno il principale scopo di <strong>automatizzare determinate operazioni sul database</strong> all&#8217;occorrenza di determinati eventi come <strong>INSERT, UPDATE o DELETE</strong>.</p>
<p>Il modo con cui creare un <a target="_blank" href="http://dev.mysql.com/doc/refman/5.0/en/triggers.html">TRIGGER</a> è piuttosto semplice:</p>
<p><em>CREATE <a target="_blank" href="http://dev.mysql.com/doc/refman/5.0/en/triggers.html">TRIGGER</a> setnoprice BEFORE UPDATE ON prodotto<br />
FOR EACH ROW<br />
BEGIN<br />
IF NEW.online = &#8216;no&#8217; THEN<br />
SET NEW.prezzo = 0;<br />
END IF;<br />
END</em></p>
<p>Analizziamo cosa fa di fatto questo <a target="_blank" href="http://dev.mysql.com/doc/refman/5.0/en/triggers.html">TRIGGER</a>, al di là della sintassi:</p>
<p>Ipotizziamo di avere ad esempio un sito di e-commerce dal quale i prodotti sono acquistabili esclusivamente quando il loro prezzo è maggiore di zero, mentre sono online altri prodotti per il quale esiste una presentazione ma l&#8217;acquisto può essere fatto contattando l&#8217;ufficio commerciale e non viene esposto il prezzo.</p>
<p>Conseguentemente quando un prodotto va offline è automatico che non sia più vendibile. La soluzione più classica e semplice (apparentemente) è quella di gestire l&#8217;operazione direttamente da backoffice dell&#8217;applicativo in modo automatico o peggio ancora di delegare al gestore del backoffice il fatto di resettare a zero il prezzo quando un prodotto va offline.</p>
<p>[Piccolo inciso, so benissimo che potrebbe essere bloccato l'acquisto oltre che per prezzo a zero anche nel caso il flag online sia off, così come so che il prodotto non sarebbe nemmeno visualizzato, ma un'esempio lo dovevo fare... <img src='http://www.massimo-caselli.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> ]</p>
<p>Entrando nel dettaglio <a target="_blank" href="http://www.mysql.com">mysql</a> applicando questo <a target="_blank" href="http://dev.mysql.com/doc/refman/5.0/en/triggers.html">TRIGGER</a> si preoccupa di eseguire <strong>PRIMA [BEFORE]</strong> dell&#8217;azione <strong>UPDATE [solo update quindi]</strong> la verifica se <strong>online diventerà uguale a off e in tal caso forza il nuovo valore di prezzo a zero.</strong></p>
<p>In sostanza il <a target="_blank" href="http://dev.mysql.com/doc/refman/5.0/en/triggers.html">TRIGGER</a> va a <strong>sostituire quelle operazioni automatiche che normalmente vengono delegate all&#8217;applicativo</strong>.</p>
<p>Per maggiori informazioni potete consultare direttamente il manuale di <a target="_blank" href="http://www.mysql.com">mysql</a> alla pagina relativa ai <a target="_blank" href="http://dev.mysql.com/doc/refman/5.0/en/triggers.html">TRIGGER</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2008/07/11/mysql-5-utilizzo-dei-trigger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertire un database PostgreSQL in MySQL e viceversa</title>
		<link>http://www.massimo-caselli.com/2008/05/10/convertire-un-database-postgresql-in-mysql-e-viceversa/</link>
		<comments>http://www.massimo-caselli.com/2008/05/10/convertire-un-database-postgresql-in-mysql-e-viceversa/#comments</comments>
		<pubDate>Sat, 10 May 2008 11:56:03 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[MySQL, DB Server]]></category>
		<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[conversione database]]></category>
		<category><![CDATA[migrazione postgresql mysql]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=125</guid>
		<description><![CDATA[La conversione di un database PostgreSQL in mysql e viceversa non è un&#8217;operazione esattamente banale. Nel senso che a differenza della conversione da SQL Server a mysql o da Access ad esempio, per i quali esiste il tool realizzato direttamente da mysql, mysql Migration Toolkit, per PostgreSQL questo software non ci aiuta. Durante la ricerca [...]]]></description>
			<content:encoded><![CDATA[<p>La <strong>conversione di un database PostgreSQL in <a target="_blank" href="http://www.mysql.com">mysql</a> e viceversa</strong> non è un&#8217;operazione esattamente banale.<br />
Nel senso che a <strong>differenza della conversione da SQL Server a <a target="_blank" href="http://www.mysql.com">mysql</a> o da Access</strong> ad esempio, per i quali esiste il tool realizzato direttamente da <a target="_blank" href="http://www.mysql.com">mysql</a>, <a title="http://www.mysql.com/products/tools/migration-toolkit/" href="http://www.mysql.com/products/tools/migration-toolkit/" target="_blank"><a target="_blank" href="http://www.mysql.com">mysql</a> Migration Toolkit</a>, per PostgreSQL questo software non ci aiuta.</p>
<p>Durante la ricerca di qualcosa di ben funzionante mi sono imbattuto in:</p>
<p><a title="http://dbconvert.com/convert-mysql-to-postgresql-pro.php" href="http://dbconvert.com/convert-mysql-to-postgresql-pro.php" target="_blank">DB Convert for <a target="_blank" href="http://www.mysql.com">mysql</a> and PostgreSQL 2.0.x</a></p>
<p>Questo software consente in <strong>modalità trial di importare solo 10 record per tabella</strong>. E&#8217; sufficiente nel caso sia necessario <strong>solo ripristinare la struttura</strong>, nel caso import di dati invece risulta insufficiente.</p>
<p>Per poter disporre delle <strong>funzionalità complete è sufficiente acquistarlo ad una cifra ragionevole di 69 dollari.</strong></p>
<p>Il software dopo l&#8217;installazione consente una <strong>comoda migrazione di tutto quanto</strong>. La migrazione può essere bidirezionale.</p>
<p>La stessa software house propone altri tool come il sync.</p>
<p>Sono disponibili inoltre migrazioni da svariati altri database.</p>
<p>Per maggiori informazioni: <a title="http://www.dbconvert.com" href="http://www.dbconvert.com" target="_blank">http://www.dbconvert.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2008/05/10/convertire-un-database-postgresql-in-mysql-e-viceversa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Soluzione problemi codifica caratteri in MySQL/PHP</title>
		<link>http://www.massimo-caselli.com/2006/01/28/soluzione-problema-codifica-caratteri-mysql/</link>
		<comments>http://www.massimo-caselli.com/2006/01/28/soluzione-problema-codifica-caratteri-mysql/#comments</comments>
		<pubDate>Sat, 28 Jan 2006 20:19:44 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[MySQL, DB Server]]></category>
		<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cirillico]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[problemi caratteri]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/2006/01/28/soluzione-problema-codifica-caratteri-mysql/</guid>
		<description><![CDATA[Buongiorno a tutti, innanzitutto cominciamo ad inquadrare il problema e a fare presente che se ora sono in grado di scrivere questo articolo è grazie al supporto che ho ricevuto sul forum di HTML.IT da parte di Leandro Luccerini, per contatti: leandro980[AT]libero[DOT]it PREMESSE AL PROBLEMA mysql versione &#62; 4.1.x Tipo di encoding delle pagine web [...]]]></description>
			<content:encoded><![CDATA[<p>Buongiorno a tutti,<br />
innanzitutto cominciamo ad inquadrare il problema e a fare presente che se ora sono in grado di scrivere questo articolo è grazie al supporto che ho ricevuto sul forum di HTML.IT da parte di Leandro Luccerini, per contatti: leandro980[AT]libero[DOT]it</p>
<p><strong>PREMESSE AL PROBLEMA</strong></p>
<ul>
<li><a target="_blank" href="http://www.mysql.com">mysql</a> versione &gt; 4.1.x</li>
<li>Tipo di encoding delle pagine web <a target="_blank" href="http://www.php.net">php</a> utf8</li>
</ul>
<p><strong>DESCRIZIONE PROBLEMA</strong></p>
<p>La situazione problematica nasce nel momento in cui abbiamo un sito web che deve gestire caratteri extra latini, per esempio nel mio caso ho affrontato questo problema dovendo realizzare un sito in <strong>lingua russa</strong>, ovvero utilizzando il <strong>cirillico</strong>.<br />
Il mio approccio alla situazione e&#8217; stato quello di realizzare <strong>TUTTE le pagine web con codifica utf8</strong> e database, tabelle e campi di testo utf8 a loro volta.<br />
La cosa che mi ha fatto impazzire e capirci veramente poco per diverso tempo e&#8217; che se io inserivo nel database caratteri cirillici come ad esempio (ÃÅ¸Ã‘â‚¬ÃÂ¸ÃÂ²ÃÂµÃ‘â€š &#8211; ciao) e da <strong>PhpMyADMIN</strong> (di seguito PMA) vedevo male, idem il dump, mentre quando tiravo su i dati da applicativo tutto funzionava a meraviglia.<br />
Capitava l&#8217;inverso con PMA, ovvero se inserivo in cirillico su PMA e visualizzavo da PMA tutto bene, via applicazione niente.</p>
<p><strong>SOLUZIONE</strong></p>
<p>Prima di tutto vi invito a leggervi questa parte di manualistica online di <a target="_blank" href="http://www.mysql.com">mysql</a>, <a title="MySQL charset connection" href="http://dev.mysql.com/doc/refman/4.1/en/charset-connection.html" target="_blank">CHARSET.</a></p>
<p>Sostanzialmente sui server <a target="_blank" href="http://www.mysql.com">mysql</a> di sistemi di hosting italiani (ma credo anche americani)  e comunque in generale, l&#8217;impostazione del <strong>default_character_set</strong> è impostata a latin1.<br />
Ma anche qualora sia impostata ad utf8 quando via script <a target="_blank" href="http://www.php.net">php</a> ci connettiamo al database <a target="_blank" href="http://www.mysql.com">mysql</a> la nostra <strong>sessione di default</strong> (nonostante la pagina sia encodata utf8) sarà  attivata con <strong>character set latin1</strong>, cosa succede quindi, che i dati e le query che inviamo sfasano e il sistema memorizza erroneamente i dati.</p>
<p>Di fatto il comportamento giusto lo ha PMA, dobbiamo cercare quindi di emularlo.<br />
Per farlo basta di fatto lanciare dopo ogni connessione la seguente query: <strong>SET NAMES utf8</strong><br />
Così facendo la connessione tra client e server sarà  UTF8.</p>
<p><strong>CONCLUSIONE</strong></p>
<p>Per concludere possiamo dire che per siti che trattano lingua standard europee come italiano, inglese, francese etc&#8230; possiamo avere tutto il <strong>DB latin1</strong>, connessione <strong>client server latin1</strong> ed encoding <strong>ISO-8859-1</strong></p>
<p>Nel caso di siti con<strong> cirillico, arabo etc&#8230;</strong> utilizziamo tutto il <strong>database UTF8</strong>, <strong>encoding delle pagine UTF8</strong> e soprattutto dobbiamo eseguire per sicurezza la query sopra indicata dopo <strong>ogni connessione con <a target="_blank" href="http://www.mysql.com">mysql</a></strong>.</p>
<p>Mi scuso per non essere stato molto chiaro in alcuni punti, purtroppo questo argomento è complesso e fastidioso&#8230;<br />
Se avete suggerimenti sono benvenuti.</p>
<p>Ciao a tutti. Max<br />
info[AT]massimo-caselli[DOT]com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2006/01/28/soluzione-problema-codifica-caratteri-mysql/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
	</channel>
</rss>

