« MySQL/Débogage » : différence entre les versions

Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 9 :
Toutefois il est possible de lever des exceptions lors des manipulations de table, par exemple pour éviter qu'une liste d'insertions s'arrête au milieu à cause d'une contrainte d'unicité. L'exemple ci-dessous fonctionne sur une table InnoDB (et pas MyISAM)<ref>http://stackoverflow.com/questions/2950676/difference-between-set-autocommit-1-and-start-transaction-in-mysql-have-i-misse</ref> :
 
<syntaxhighlight lang="mysql">
ALTER TABLE `MaTable1` ADD UNIQUE(`id`);
 
Ligne 39 :
* Vérifier que l'hôte du compte n'a pas été changé par une règle réseau.
*:Si c'est le cas, tester en shell :
<syntaxhighlight lang="bash">
sudo mysql -h mon_hôte1 -u mon_compte
sudo mysql -h mon_hôte2 -u mon_compte
</syntaxhighlight>
* Sinon, recréer le droit avec :
<syntaxhighlight lang="mysql">
GRANT ALL PRIVILEGES ON *.* TO 'mon_compte'@'mon_hôte2' IDENTIFIED BY PASSWORD 'mon_mot_de_passe_hashé';
</syntaxhighlight>
Ligne 67 :
=== Can't create/write to file 'mon_dossier/mon_fichier.csv' ===
Lors d'un SELECT INTO OUTFILE, si le compte du SGBD utilisé a les droits d'exportation (<code>GRANT FILE ON .* TO 'mon_compte'@'%';</code>), le problème est lié au compte MySQL de l'OS qui n'a pas accès au système de fichier. Comme généralement le compte "mysql" sur Linux n'a pas de shell, cela peut se confirmer ainsi :
<syntaxhighlight lang="bash">
su - -s /bin/bash mysql
touch mon_dossier/mon_fichier.csv
Ligne 73 :
 
Si les droits manquent :
<syntaxhighlight lang="bash">
sudo chown -R mysql mon_dossier
</syntaxhighlight>
Ligne 84 :
=== Cannot drop index 'UNIQ_XXX': needed in a foreign key constraint ===
Il faut supprimer la clé étrangère avant l'index duquel elle dépend :
<syntaxhighlight lang="mysql">
ALTER TABLE `maTable` DROP FOREIGN KEY `FK_XXX`;
ALTER TABLE `maTable` DROP INDEX `UNIQ_XXX`;
Ligne 94 :
 
Toutefois cela ne préserve pas leur encodage Unicode. Le mieux est donc :
<syntaxhighlight lang="sql">
SET NAMES 'utf8';
</syntaxhighlight>
Ligne 124 :
 
Pour les supprimer, l'utilisateur root n'a pas le droit de modifier directement directement la table "information_schema". Il faut donc exécuter les requêtes générées par la suivante :
<syntaxhighlight lang="mysql">
SELECT concat('alter table ',table_schema,'.',table_name,' DROP FOREIGN KEY ',constraint_name,';')
FROM information_schema.table_constraints
Ligne 134 :
Le serveur SQL est surchargé : exécuter les instructions une par une.
Sinon :
<syntaxhighlight lang=mysq"mysql">
SET innodb_lock_wait_timeout = 120;
</syntaxhighlight>