Lors de la migration d’un serveur vers un autre, après avoir effectué le transfert de [...]
Lors de la migration d’un serveur vers un autre, après avoir effectué le transfert de toutes les données j’ai eu la joie de recevoir ce code d’erreur :
« SQLSTATE[HY000] [2002] No such file or directory »
Pourtant via la commande en SSH :
mysqldump -h oldhost -u oldusername -poldpassword --single-transaction olddbname | mysql -h newhost -u newusername -pnewpassword newdbname |
Le transfert s’était bien effectué au niveau des tables.
Je n’ai pas compris tout de suite pourtant mon local.xml ressemblait à cela :
<default_setup> <![CDATA[localhost]]> <![CDATA[dboXXXXXXX]]> <![CDATA[XXXXXXXXX]]> <![CDATA[dbXXXXXXXX]]> 1 |
En fouillant un peu sur Google, j’ai trouvé un élément de réponse : le socket n’était pas configuré en effet sur 1&1 par exemple vous pouvez voir que l’adresse de votre base de donnée est :
localhost:/tmp/mysql5.sock (la fin indiquant le socket et le type de BDD)
mais par défaut la configuration de votre php.ini est :
pdo_mysql.default_socket=/var/mysql/mysql.sock |
il suffit de le changer et d’écrire :
pdo_mysql.default_socket=/var/mysql/mysql5.sock |
N’oubliez pas non plus de vider le dossier var/cache et var/session et assurez vous qu’il n’y ai qu’un seul fichier local.xml.
Pour les sauvegardes ne renommer pas en local_sav.xml par exemple, vous allez « override » votre fichier initial : la bonne solution est local.xml.sav
EDIT :
Il y a une autre solution pour les gens qui comme moi n’ont pas toujours la main sur le PHP.ini général et qui s’applique pour tous :
Ajouter la ligne :
<unix_socket><![CDATA[/tmp/mysql5.sock]]> |
Ce qui donnera au final :
<default_setup> <![CDATA[localhost]]> <![CDATA[dboXXXXXXX]]> <![CDATA[XXXXXXXXX]]> <![CDATA[dbXXXXXXXX]]> <unix_socket><![CDATA[/tmp/mysql5.sock]]> 1 |
Ainsi, tout est géré via le fichier local.xml.




