<?xml version="1.0" encoding="UTF-8"?>
<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>dasini.net - Journal d'un expert MySQL &#187; !include</title>
	<atom:link href="http://dasini.net/blog/tag/include/feed/" rel="self" type="application/rss+xml" />
	<link>http://dasini.net/blog</link>
	<description>Repousser les frontières de la connaissance</description>
	<lastBuildDate>Thu, 02 Feb 2012 09:06:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>!include</title>
		<link>http://dasini.net/blog/2009/08/13/include/</link>
		<comments>http://dasini.net/blog/2009/08/13/include/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 00:07:05 +0000</pubDate>
		<dc:creator>freshdaz</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[!include]]></category>
		<category><![CDATA[my.cnf]]></category>
		<category><![CDATA[my.ini]]></category>

		<guid isPermaLink="false">http://dasini.net/blog/?p=721</guid>
		<description><![CDATA[my.cnf, comme vous le savez certainement est le nom du fichier de configuration de MySQL. Vous pouvez également le retrouver sous le nom de my.ini en environnement MS Windows. Il permet comme son nom l'indique de configurer votre serveur MySQL en y centralisant les options de ... configuration. Le but ici n'est pas de détailler la longue liste des paramètres de MySQL, la documentation officielle est (presque) bien faite, mais de mettre le "focus" sur la directive !include (avec un "!" devant).
Cette dernière permet d'inclure un fichier de configuration dans un autre (sic). Autant je suis un adèpte de la non duplication du code en dévellopement (des require_once en PHP utilisés avec modération ça vous simplifie bien votre code), autant je ne suis pas un grand fan pour éclater la configuration de mon serveur MySQL en plusiseurs endroits. Cependant :) il faut avouerque parfois cela peut servir !
Alors comment ça marche ?
C'est (apparemment) très simple. Mon client mysql va chercher sa configuration dans différents endroits (définit à la compilation):

daz@daz-laptop:~$ mysql --help
...
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

Mon fichier de configuration se nomme  /etc/mysql/my.cnf et il contient simplement la directive !include suivit du "vraie" fichier de configuration:

daz@daz-laptop:~$ cat /etc/mysql/my.cnf
!include /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf

Et au final dans mon fichier de configuration (au passage j'utilise le très pratique soft développé par Giuseppe Maxia : MySQL Sandbox):

daz@daz-laptop:~$ cat /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf
[mysql]
prompt='mysql [\h] {\u} (\d) > '
[client]
port            		= 5135
socket          		= /tmp/mysql_sandbox5135.sock
...


Simple non ?
C'est (presque) tout, et ça marche...pas :(

daz@daz-laptop:~$ mysql

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Une petite vérification s'impose:


daz@daz-laptop:~$ mysql --help
mysql  Ver 14.14 Distrib 5.1.35, for pc-linux-gnu (i686) using readline 5.1
...

port                              0
socket                            (No default value)


Les paramètres ne sont pas prit en compte. (commentaire de l'expert: ça ne peut donc pas fonctionner)


(30 minutes et beaucoups d'insultes plus tard...)


En fait, la subtilité,  c'est de rajouter un saut à la ligne, à la fin de la commande !include /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf


daz@daz-laptop:~$ mysql --help
mysql  Ver 14.14 Distrib 5.1.35, for pc-linux-gnu (i686) using readline 5.1
...

port                              5135
socket                            /tmp/mysql_sandbox5135.sock

daz@daz-laptop:~$ mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 5

Server version: 5.1.35-log MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql [localhost] {daz} ((none)) > 


(commentaire de l'expert: ça fonctionne !)



Giuseppe Maxia]]></description>
			<content:encoded><![CDATA[<p><a title="MySQL ::   MySQL 5.1 Reference Manual :: 4.2.3.3 Using Option Files" href="http://dev.mysql.com/doc/refman/5.1/en/option-files.html" target="_blank"><strong>my.cnf</strong></a>, comme vous le savez certainement est le nom du fichier de configuration de MySQL. Vous pouvez également le retrouver sous le nom de <strong>my.ini</strong> en environnement MS Windows. Il permet comme son nom l&#8217;indique de configurer votre serveur MySQL en y centralisant les options de &#8230; configuration. Le but ici n&#8217;est pas de détailler la longue liste des paramètres de MySQL, la documentation officielle est (presque) bien faite, mais de mettre le &laquo;&nbsp;<em>focus</em>&nbsp;&raquo; sur la directive <strong>!include</strong> (avec un &laquo;&nbsp;<strong>!</strong>&nbsp;&raquo; devant).</p>
<p>Cette dernière permet d&#8217;inclure un fichier de configuration dans un autre (<em>sic</em>). Autant je suis un adèpte de la non duplication du code en dévellopement (des <em>require_once</em> en PHP utilisés avec modération ça vous simplifie bien votre code), autant je ne suis pas un grand fan pour éclater la configuration de mon serveur MySQL en plusiseurs endroits. Cependant <img src='http://dasini.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  il faut avouer que parfois cela peut servir !</p>
<h4>Alors comment ça marche ?</h4>
<p>C&#8217;est (<em>apparemment</em>) très simple. Mon client mysql va chercher sa configuration dans différents endroits (définit à la compilation):</p>
<address><span style="color: #0000ff;">daz@daz-laptop:~$ mysql &#8211;help</span></address>
<address><span style="color: #0000ff;">&#8230;</span></address>
<address><span style="color: #0000ff;">Default options are read from the following files in the given order:<br />
<strong>/etc/my.cnf</strong> <strong>/etc/mysql/my.cnf</strong> <strong>/usr/local/mysql/etc/my.cnf</strong> <strong>~/.my.cnf</strong></span> </address>
<p><!-- 		!--></p>
<p><!-- 		!--><br />
Mon fichier de configuration se nomme  /etc/mysql/my.cnf et il contient simplement la directive !include suivit du &laquo;&nbsp;vraie&nbsp;&raquo; fichier de configuration:</p>
<address><span style="color: #0000ff;">daz@daz-laptop:~$ cat /etc/mysql/my.cnf<br />
<strong>!include /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf</strong></span> </address>
<p><!-- 		!--></p>
<p><!-- 		!--><br />
Et au final dans mon fichier de configuration (au passage j&#8217;utilise le très pratique soft développé par <a title="Giuseppe Maxia - Data Charmer" href="http://datacharmer.blogspot.com/" target="_blank">Giuseppe Maxia</a> : <a title="MySQL Sandbox" href="http://mysqlsandbox.net/" target="_blank">MySQL Sandbox</a>):</p>
<address><span style="color: #0000ff;">daz@daz-laptop:~$ cat /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf</span></address>
<address><span style="color: #0000ff;">[mysql]<br />
prompt=&#8217;mysql [\h] {\u} (\d) &gt; &#8216;</span> </address>
<address><span style="color: #0000ff;">[client]<br />
port            		= 5135<br />
socket          		= /tmp/mysql_sandbox5135.sock<br />
&#8230;</span></address>
<p><!-- 		!--></p>
<p><!-- 		!--><br />
Simple non ?</p>
<p>C&#8217;est (presque) tout, et ça marche&#8230;pas <img src='http://dasini.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<address><span style="color: #0000ff;">daz@daz-laptop:~$ mysql</span></address>
<address><span style="color: #0000ff;">ERROR 2002 (HY000): Can&#8217;t connect to local MySQL server through socket &#8216;/tmp/mysql.sock&#8217; (2)</span></address>
<p><!-- 		!--></p>
<p><!-- 		!--><br />
Une petite vérification s&#8217;impose:</p>
<address><span style="color: #0000ff;">daz@daz-laptop:~$ mysql &#8211;help<br />
mysql  Ver 14.14 Distrib 5.1.35, for pc-linux-gnu (i686) using readline 5.1<br />
&#8230;</span></address>
<address><span style="color: #0000ff;">port                              <span style="color: #ff0000;">0</span><br />
socket </span> <span style="color: #ff0000;">(No default value)</span></address>
<p><!-- 		!--></p>
<p><!-- 		!--><br />
Les paramètres ne sont pas prit en compte. <em>(<span style="text-decoration: underline;">commentaire de l&#8217;expert</span>: ça ne peut donc pas fonctionner)</em></p>
<p><em><br />
</em></p>
<p><!-- 		!--></p>
<p><!-- 		!--><br />
(30 minutes <span style="text-decoration: line-through;"><em>et quelques insultes</em></span> plus tard&#8230;)</p>
<p><!-- 		!--></p>
<p><!-- 		!--><br />
En fait, la subtilité,  c&#8217;est de rajouter <strong><span style="text-decoration: underline;">un saut à la ligne</span></strong>, à la fin de la commande<strong> !include /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf</strong></p>
<address><span style="color: #0000ff;">daz@daz-laptop:~$ mysql &#8211;help<br />
mysql  Ver 14.14 Distrib 5.1.35, for pc-linux-gnu (i686) using readline 5.1<br />
&#8230;</span></address>
<address><span style="color: #0000ff;">port </span> <span style="color: #ff0000;"> 5135</span></address>
<address><span style="color: #0000ff;">socket </span> <span style="color: #ff0000;">/tmp/mysql_sandbox5135.sock</span></address>
<address><span style="color: #ff0000;"> </span></address>
<address> </address>
<address></address>
<p><!-- 		!--></p>
<p><!-- 		!--><br />
Vérification (au cas où):</p>
<address><span style="color: #0000ff;">daz@daz-laptop:~$ mysql</p>
<p>Welcome to the MySQL monitor. Commands end with ; or \g.<br />
Your MySQL connection id is 5<br />
Server version: 5.1.35-log MySQL Community Server (GPL)<br />
Type &#8216;help;&#8217; or &#8216;\h&#8217; for help. Type &#8216;\c&#8217; to clear the current input statement.<br />
mysql [localhost] {daz} ((none)) &gt;</p>
<p></span><br />
</address>
<p>(<span style="text-decoration: underline;">commentaire de l&#8217;expert</span>: ça fonctionne !)</p>
<p> <img src='http://dasini.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">
<h2>Giuseppe <span class="__mozilla-findbar-search" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;">Maxia</span></h2>
</div>
]]></content:encoded>
			<wfw:commentRss>http://dasini.net/blog/2009/08/13/include/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

