J'utilise MySQL 8.0.11 sous Windows 8.1, et j'entame les vues dans la partie "Au-delà des tables classiques".
Il semble que ma console réagit anormalement lorsque j'essaie de faire les updates sur les vues du cours (Partie : Au-delà des tables classiques / Vue / Modification des données d'une vue). En effet, aucune des vues du cours ne sont updatables (code 1288 (HY000): The target table V_Animal_details of the UPDATE is not updatable) alors qu'elle le devrait. Pourtant je réponds au préconisation préalablement présentée : pas de clause GROUP BY, HAVING, ni de DISTINCT ou de LIMIT, aucune fonction d'aggregation, d'UNION ou de sous-requête dans le SELECT, et on ne modifie qu'une valeur dans une table.
J'avais déjà eu un comportement bizarre lors de la partie sur les triggers, et j'avais changé mon profil sdz pour travailler uniquement avec root (même si c'est déconseillé, cela me permettait de poursuivre le cours sachant que le problème de l'époque était sur les privilèges). Cependant, cette astuce ne semble pas impacter ce nouveau problème.
Sauriez-vous me guider pour solutionner ce problème ?
Une relation 1,1 peut etre 1,1 dans l'autre sens mais une relation 1,n dans un sens sera n,1 dans l'autre.
Le verbe dépendre peut porter à confusion. Alors que regrouper, non. Etre le groupe, ou faire parti du groupe. On voit mieux le sens de la relation 1,n ou n,1
J'allais crier au secours mais finalement j'ai résolu mon problème que voici :
Dans la leçon Suppression et modification de données, il est proposé de sauvegarder sa base de données en utilisant la commande suivante : mysql nom_base < chemin_fichier_de_sauvegarde.sql
Note importante : je suis sur windows 10
J'ai donc fait un shift + click droit dans mon dossier contenant le fichier de sauvegarde et là j'ai ouvert powershell (avant on avait accès à l'invite de commande de windows) d'où j'ai exécuté la commande.
Et là bim ! message d'erreur tout moche : L’opérateur « < » est réservé à une utilisation future.
Voici la solution :
Powershell n'aime pas <. Il faut donc passer par l'invite de commande windows auquel on n'a plus accès avec shift + click droit... Mais qu'on peut obtenir en effaçant le contenu de la barre d'adresse du dossier et en tapant cmd !
J'ai alors retapé la commande de type mysql nom_base < chemin_fichier_de_sauvegarde.sql (en y ajoutant mon login et mon mot de passe, ce qui donne par exemple mysql -u root test2 < sauvegarde.sql) et Halleluïa ! la grâce divine fait alors son effet et la commande fonctionne.
Moralité : merci windows 10 pour me mettre des bâtons dans les roues !
je n'arrive pas à publier le résultat de l'activité_partie 2 j'obtiens un message d'erreur à chaque fois ("The file "" does not exist) et je ne peux donc plus avancer:
Pouvez-vous m'aider svp?
Merci.
- Edité par ElianeDenis 19 décembre 2018 à 17:24:36
Après, afin de vous assurer d'avoir une réponse le plus rapidement possible, je vous invite à directement contacter l'équipe du site via l'adresse hello@openclassrooms.com. En effet, l'équipe du site ne passant que très rarement sur les forums, il sera beaucoup plus efficace de les contacter directement.
Je suis entrain de corriger l'activité de la partie 2 et je m'aperçois que dans le corrigé type (fichier ptp1.sql), il manque la colonne "description" dans la table Categorie.
Cette table est fournie au départ donc ça ne devrait pas poser de problème mais cela peut prêter à confusion.
Merci pour votre réponse, j'ai trouvé la solution entre deux, ma base était désélectionné, j'ai du effectuer la commande USE elevage et la commande source a fonctionné.
Je suis sous MacOS Mojave 10.14.1
MySQL 8.0.13
Par contre j'ai un autre problème, avec le LOAD DATA LOCAL INFILE
Avec student j'ai cette erreur
Last login: Thu Jan 10 18:51:46 on ttys000
MacBook-Pro-de-Jimmy:~ jimmy_sobry$ mysql -u student -p --default-character-set=utf8;
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 8.0.13 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> USE elevage
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> LOAD DATA INFILE "\Users\jimmy_sobry\Desktop\animal.csv" INTO TABLE Animal
-> FIELDS TERMINATED BY';' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n'
-> (espece, sexe, date_naissance, nom, commentaires); ERROR 1045 (28000): Access denied for user 'student'@'localhost' (using password: YES)
mysql>
et avec root
MacBook-Pro-de-Jimmy:~ jimmy_sobry$ mysql -u root -p --default-character-set=utf8;
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 50
Server version: 8.0.13 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> USE elevage
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> LOAD DATA INFILE "\Users\jimmy_sobry\Desktop\animal.csv" INTO TABLE Animal
-> FIELDS TERMINATED BY';' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n'
-> (espece, sexe, date_naissance, nom, commentaires); ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
mysql>
mysql> show variables like "secure_file_priv";
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | NULL |
+------------------+-------+
1 row in set (0,01 sec)
mysql>
Comment changer cette variable ? ou avoir accès à la commande avec student ?
Mon fichier com.oracle.oss.mysql.mysqld.plist est bloqué, je ne sais pas comment le débloquer
- Edité par jimmyso59162 10 janvier 2019 à 22:47:19
Juste une petite question sur la partie jointure dans le cours. Je ne comprends pourquoi la requête qui suit me donne comme résultat Empty set. Il n'y a rien qui s'affiche.
La requête en question
SELECT Animal.nom, Pere.nom AS Papa, Mere.nom AS Maman
FROM Animal
INNER JOIN Animal AS Pere
ON Animal.pere_id = Pere.id
INNER JOIN Animal AS Mere
ON Animal.mere_id = Mere.id
INNER JOIN Espece
ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'chat';
Tu peux modifier la valeur de cette option dans ton fichier my.cnf file. Le plus simple est de ne rien mettre, le plus sécurisé est de placer ton fichier à importer (remplissageAnimal.sql) dans le répertoire précisé dans cette option.
@M13KD : La syntaxe de la requête est exacte, donc ce sont les données qui ne contiennent aucun animal de l'espèce "chat" ayant un père ET une mère de définis ...
Bonjour j'ai un soucis avec ma BDD, le soucis est que j'ai installé mysql sur ma machine en plus du faites que j'ai phpmyqdmin et cela me donne une erreur de ce genre <Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.>
Sur la partie 7 du cours, au moment d'entrer le fichier .csv, je ne trouve pas le moyen de le faire car j'ai la réponse :
mysql> LOAD DATA LOCAL INFILE 'animal.csv'
-> INTO TABLE Animal
-> FIELDS TERMINATED BY ';' ENCLOSED BY '"'
-> LINES TERMINATED BY '\n' -- ou '\r\n' selon l'ordinateur et le programme utilisés pour créer le fichier
-> (espece, sexe, date_naissance, nom, commentaires);
ERROR 1148 (42000): The used command is not allowed with this MySQL version
et suite à plusieurs tentatives et recherches sur internet, j'ai tenté un :
MySQL -p -u root --enable-local-infile
de sorte que j'ai alors la configuration suivante :
mysql> SHOW VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.01 sec)
(précédemment, c'était à OFF : j'ai compris qu'avant la version 8 par défaut c'était à ON, ensuite par souci de sécurité l'installation le pose sur OFF. Et la version que j'ai téléchargée est la version 8.0...)
et lorsque je quit et que je reviens sous la session student, le message revient.
J'ai tenté d'ôter le terme LOCAL dans la commande comme suggéré dans un post, voici ce qu'il se produit :
mysql> LOAD DATA INFILE 'animal.csv'
-> INTO TABLE Animal
-> FIELDS TERMINATED BY ';' ENCLOSED BY '"'
-> LINES TERMINATED BY '\n' -- ou '\r\n' selon l'ordinateur et le programme utilisés pour créer le fichier
-> (espece, sexe, date_naissance, nom, commentaires);
ERROR 1045 (28000): Access denied for user 'student'@'localhost' (using password: YES)
Je ne comprends pas car j'ai vérifié et refait la manip de début de cours sous la session root :
GRANT ALL PRIVILEGES ON elevage.* TO 'student'@'localhost';
et une fois revenu sous la session student, j'ai bien sélectionné :
USE elevage;
Avez-vous une suggestion sur comment surmonter ce passage ?
Je vous remercie pour votre aide.
Je suis actuellement en Nouvelle-Zélande, j'ai un décalage horaire de 12h exactement donc pardonnez par avance mon temps de réponse pour la suite
lorsque j'essaie de créer un trigger, j'obtiens un erreur sur les privileges :
mysql> create trigger before_update_animal before update
-> on animal for each row
-> begin
-> if new.sexe != 'M'
-> and new.sexe != 'F'
-> and new.sexe is not null
-> then
-> set new.sexe = null;
-> end if;
-> end |
ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
Pourtant je pensais m'être octroyé les bons :
mysql> grant all on elevage.* to 'pat'@'localhost';
Query OK, 0 rows affected (0,10 sec)
mais apparemment non. Du coup j'ai essayé plus précis pour voir :
mysql> grant trigger on elevage.* to 'pat'@'localhost';
Sur la partie 7 du cours, au moment d'entrer le fichier .csv, je ne trouve pas le moyen de le faire car j'ai la réponse :
mysql> LOAD DATA LOCAL INFILE 'animal.csv'
-> INTO TABLE Animal
-> FIELDS TERMINATED BY ';' ENCLOSED BY '"'
-> LINES TERMINATED BY '\n' -- ou '\r\n' selon l'ordinateur et le programme utilisés pour créer le fichier
-> (espece, sexe, date_naissance, nom, commentaires);
ERROR 1148 (42000): The used command is not allowed with this MySQL version
et suite à plusieurs tentatives et recherches sur internet, j'ai tenté un :
MySQL -p -u root --enable-local-infile
de sorte que j'ai alors la configuration suivante :
mysql> SHOW VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.01 sec)
(précédemment, c'était à OFF : j'ai compris qu'avant la version 8 par défaut c'était à ON, ensuite par souci de sécurité l'installation le pose sur OFF. Et la version que j'ai téléchargée est la version 8.0...)
et lorsque je quit et que je reviens sous la session student, le message revient.
J'ai tenté d'ôter le terme LOCAL dans la commande comme suggéré dans un post, voici ce qu'il se produit :
mysql> LOAD DATA INFILE 'animal.csv'
-> INTO TABLE Animal
-> FIELDS TERMINATED BY ';' ENCLOSED BY '"'
-> LINES TERMINATED BY '\n' -- ou '\r\n' selon l'ordinateur et le programme utilisés pour créer le fichier
-> (espece, sexe, date_naissance, nom, commentaires);
ERROR 1045 (28000): Access denied for user 'student'@'localhost' (using password: YES)
Je ne comprends pas car j'ai vérifié et refait la manip de début de cours sous la session root :
GRANT ALL PRIVILEGES ON elevage.* TO 'student'@'localhost';
et une fois revenu sous la session student, j'ai bien sélectionné :
USE elevage;
Bonjour pour répondre à ton message
il faut que tu modifies le fichier my.ini dans le C:\ProgramData\MySQL\MySQL Server 8.0, il faut que tu affiches les dossiers cachés.
une fois dans le fichier "my" ouvre le avec notepad++ et cherche la ligne
# Secure File Priv. secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"
soit tu mets tes fichiers dans ce dossier soit tu mets un '#' devant la ligne secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads" pour la grisé et choisir d'ouvrir un fichier qui peut être ailleurs sur ton pc.
LOAD DATA INFILE 'C://ProgramData/MySQL/MySQL Server 8.0/Uploads/animal.csv' INTO TABLE animal FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' (id,espece,sexe,date_naissance,nom,commentaires);
choisi de mettre les slash dans le bon sens / et non comme ça \ et de retirer le Local dans la première ligne.