mardi 24 mai 2016

Mettre à jour son serveur MySQL en 5.7

Pour pouvoir utiliser les champs de type json en MySQL, il vous faut la version 5.7. Cependant, cette version étant assez récente, elle n'est pas fournie dans les dépôts d'origine sur toutes les distributions de Linux.

Voilà les commandes à executer pour mettre à jour votre serveur MySQL en 5.7.12, sans perdre les données (testées depuis une Ubuntu 14.04.4 LTS, qui a MySQL 5.6 dans les dépôts) :
wget http://dev.mysql.com/get/mysql-apt-config_0.7.2-1_all.deb sudo dpkg --install mysql-apt-config_0.7.2-1_all.deb
Choisissez MySQL Server au premier choix, puis la version 5.7 ensuite.
De retour au menu précédent, allez sur Ok (dernier choix) et validez.
sudo apt-get update && sudo apt-get upgrade mysql-server sudo mysql_upgrade -uroot -p --force sudo service mysql-server restart

Erreur 3065 suite à la migration

Si suite à cette mise à jour, vous avez ce type de d'erreur :
General error: 3065 Expression #1 of ORDER BY clause is not in SELECT list, references column
C'est un mode de requête qui est activé par défaut depuis la 5.7.5 (migration testée en 5.7.12) : ONLY_FULL_GROUP_BY.
Pour le supprimer, copiez ce que la requête suivante retourne :
SELECT @@GLOBAL.sql_mode;
Ensuite, ouvrez le fichier /etc/mysql/my.cnf, et sous la clef mysqld, ajoutez sql_mode = '' (en valeur : ce que vous avez copié, moins ONLY_FULL_GROUP_BY).