Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Cours] Administrez vos BDD avec MySQL

28 mars 2018 à 16:12:01

Bonjour,

Oui c'est bien cela ;)

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
15 mai 2018 à 19:00:01

Bonjour, 

Suite à des recherches infructueuses dans la doc Mysql et google, je me permets de demander de l'aide ici car j'ai un problème pour créer un nouvel utilisateur (cf: cours )

Lorsque je tape la commande suivante dans mysql (celle indiquée dans le cours):

  • GRANT ALL PRIVILEGES ON elevage.* TO 'xxxx'@'localhost' IDENTIFIED BY 'xxxxxx';

(que j'ai rempli correctement au niveau du nom d'utilisateur et du mot de passe)

 la console me retourne l'erreur qui suit: 

  • ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'XXXX'' at line 1
Quelqu'un a-t-il une solution ?

Merci pour votre aide

  • Partager sur Facebook
  • Partager sur Twitter
15 mai 2018 à 23:23:38

bonjour,

Si l'utilisateur n'est pas créer, on commence par un CREATE

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

et en suite on fait un GRANT

GRANT ALL PRIVILEGES ON database.table TO 'user'@'localhost';

Est ce que ca fonctionne mieux ?

  • Partager sur Facebook
  • Partager sur Twitter
16 mai 2018 à 14:24:51

Bonjour, 

Merci beaucoup ! Tout semble fonctionner désormais ! 

  • Partager sur Facebook
  • Partager sur Twitter
8 juin 2018 à 18:14:58

Bonjour,

Je cherche en vain depuis trop longtemps. Quelqu'un sait comment régler :

"The MySQL server is running with the --secure-file-priv option so it cannot execute this statement"

Je suis entrain d'essayer de faire (sur le chapitre 7 de la 1er partie) :

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);

J'ai abouti à la situation de ce sujet : https://openclassrooms.com/forum/sujet/mysql-probleme-pour-l-insertion-de-donnee-75168

J'ai fait tout ce qu'il y avait écrit, mais j'ai eu le message plus haut. 

  • Partager sur Facebook
  • Partager sur Twitter
9 juin 2018 à 12:23:01

Bonjour tout le monde!

Je suis bloqué au chapitre 7 "Insertion de données"

Mon souci est à l'import du fichier 'Animal.csv' ( dont le chemin est E:\TutoDB\ProjMysql\Animal.csv )

Mysql me renvoie:

ERROR 1148 (42000): The used command is not allowed with this MySQL Version

J'ai essayé plusieurs commandes, en remplaçant les \ par des / pour le chemin du fichier, en ajoutant \n\r pour les fins de lignes.

Voici la commande du cours:

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);



J'utilise Mysql 8.0.11.

Si vous avez des idées... Merci d'avance

  • Partager sur Facebook
  • Partager sur Twitter
9 juin 2018 à 12:33:58

Bonjour Jean,

Je n'ai pas vérifié que ce code fonctionne.. ou pas.

Mais dans un premier temps, je pense qu'il serait bon d'ajouter un caractere d'échappement avant l'apostrophe devant ordinateur.

LINES TERMINATED BY '\n' -- ou '\r\n' selon l'ordinateur et le programme utilisés pour créer le fichier

LINES TERMINATED BY '\n' -- ou '\r\n' selon l  ICI ->   \'ordinateur et le programme utilisés pour créer le fichier

Cdt
  • Partager sur Facebook
  • Partager sur Twitter
9 juin 2018 à 12:44:38

Autant pour moi, j'ai mis ces instructions sans les commentaires dans la console:

LOAD DATA LOCAL INFILE 'animal.csv'
 
INTO TABLE Animal
 
FIELDS TERMINATED BY ';' ENCLOSED BY '"'
 
LINES TERMINATED BY '\n'
 
(espece, sexe, date_naissance, nom, commentaires);

Merci Eric.

Je recherche le fichier de conf "my.cnf" pour le modifier, mais introuvable... peut-être qu'on ne le trouve que sous Mac et Linux...

Apparemment, lorsqu'il y a un code erreur 1148 sur cette commande c'est qu'elle est désactivé coté client (LOCAL), ça, c'est si j'ai bien compris la cause. Le remède se situerai donc dans "my.cnf"

-
Edité par jeanbosta 9 juin 2018 à 12:56:44

  • Partager sur Facebook
  • Partager sur Twitter
20 juin 2018 à 19:01:34

Bonjour,

dans l'activité à la fin de la partie 2, il est dit :

  • En dehors de la page principale, il existe trois type de pages : une page utilisateur, reprenant les articles écrits par un utilisateur triés par date, une page catégorie, qui affiche les articles d’une catégorie, également triés par date, et enfin une page article, qui affiche un article complet ainsi que ses commentaires par ordre chronologique.

Il est donc question de pages... il me semble donc que l'activité ne consiste pas seulement à remplir le fichier SQL, mais à tester le résultat de création de tables et les requêtes dans un navigateur web.

Donc je pose la question, est-ce que l'activité consiste uniquement à remplir le fichier SQL fourni ou faut-il créer une sorte de mini projet avec un langage de programmation associé, PHP ou autre ?

Merci.

  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2018 à 0:00:50

Bonjour,

Bonne remarque. J'avais compris comme toi. Mais au final il faut juste créer les Tables.

  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2018 à 9:30:17

Bonjour,

L'énoncé est quand même assez clair non ?

L'énoncé de l'activité dit:

Vous devez renvoyer un fichier zip contenant le fichier .sql contenant les requêtes de création de toutes les tables de la base de données (y compris les tables fournies), ainsi que les éventuelles requêtes de création de clés et/ou d’index.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
21 juin 2018 à 9:48:53

Je n'étais pas sûr...

J'ai une autre question. L'énoncé dit aussi :

Notez qu’à l’exception de la clé primaire, aucune clé et aucun index n’est créé pour ces deux tables. N’hésitez pas à en rajouter si vous le jugez nécessaire (sans modifier les requêtes fournies).

Si j'ai bien compris, dans le cas où il faudrait rajouter des clés étrangères ou autres clés et index, il ne faut pas les rajouter dans la requête de création de la table elle-même mais faire une requête ALTER TABLE à la suite pour les rajouter. Ma question concerne les tables qu'on rajoute, est-ce qu'on peut mettre les clés étrangères dans les requêtes de création des tables elles-mêmes ou il faut faire une requête ALTER TABLE à la suite pour les rajouter ?

-
Edité par me_moi 21 juin 2018 à 9:49:59

  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2018 à 10:15:53

Benzouye a écrit:

Bonjour,

L'énoncé est quand même assez clair non ?


Faut croire que non, si plusieurs personnes se posent la question.
  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2018 à 13:28:26

me_moi a écrit:

il ne faut pas les rajouter dans la requête de création de la table elle-même mais faire une requête ALTER TABLE à la suite pour les rajouter. Ma question concerne les tables qu'on rajoute, est-ce qu'on peut mettre les clés étrangères dans les requêtes de création des tables elles-mêmes ou il faut faire une requête ALTER TABLE à la suite pour les rajouter ?

Je pense qu'il est plus judicieux de faire des ALTER TABLE qui sont distincts et donc plus visibles que si tu modifies simplement le CREATE TABLE.

Mais cela est reste subjectif et va dépendre de ton correcteur ... comme souvent ...

norit a écrit:

Faut croire que non, si plusieurs personnes se posent la question.

Benzouye a écrit:

L'énoncé de l'activité dit:

Vous devez renvoyer un fichier zip contenant le fichier .sql contenant les requêtes de création de toutes les tables de la base de données (y compris les tables fournies), ainsi que les éventuelles requêtes de création de clés et/ou d’index.

Là c'est carrément clair ... Il n'est absolument pas question de créer des fichiers applicatifs (PHP ou autres), seulement du SQL ...

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
2 juillet 2018 à 21:30:33

Bonjour, 

je viens vers vous car je suis dans la partie "Sous-requêtes" paragraphe "sous-requête renvoyant une ligne" où l'exemple ci-après est donné et je ne le comprends pas :

SELECT id, sexe, nom, espece_id, race_id
FROM animal
WHERE (id, race_id) = (
SELECT id, espece_id
FROM race
WHERE id = 7);

Alors il y a plusieurs choses que je ne comprends pas :

  • 1 : pourquoi faire une telle requête quand on obtiens le même résultat avec :
    SELECT id, sexe, nom, espece_id, race_id
    FROM animal
    WHERE id = 7;
  • Est-ce que cela ne ralentit pas le moteur de faire une telle sous-requête alors qu'on obtient le même résultat sans sous-requête ni jointure ?
  • 2 : la sous-requête renvoie le résultat 7, 2 dans la table race hors lorsque l'on fait la requête entière on obtient
      id     sexe     nom               espece_id       race_id
      7        F        Caroline             1                    2
Le 7 de la sous requête correspond bien à l'id de la requête mais le 2 est d'origine espece_id changé en race_id dans notre requête principale. Quel intérêt ? Parce que là dans ma bdd l'id 7 correspond à un chien femelle berger blanc, hors si je prends la sous-requête seule, ça correspond au sphinks qui n'a pas de correspondance dans la table "animal".
Du coup je suis perdue et ça m'embête de continuer plus loin le cours si je n'ai pas compris ceci, je pense que les jointures et sous-requêtes sont importantes.
Merci par avance à la bonne âme qui saura m'expliquer tout ça :/
  • Partager sur Facebook
  • Partager sur Twitter
3 juillet 2018 à 11:39:02

Bonjour,

Attention, ce n'est qu'une requête d'exemple ...

En effet, cela n'a aucun sens de comparer espece_id et race_id ...

Taguan montre juste le fonctionnement de la condition d'égalité sur deux colonnes, peu importe finalement le résultat ...

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
4 juillet 2018 à 19:06:46

Bonsoir tout le monde,

Je suis entrain d'étudier le chapitre 2 de la 2ème partie "Clés primaires et étrangères" et dans ce cours on nous demande de créer une table "espece" qui aura un lien avec la table "Animal" que l'on a déjà créée. Ce lien sera une clé étrangère que l'on crééra sur une colonne espece_id (appartenant à la table "Animal"). Après avoir suivi toutes ces instructions, je ne devrais pas rencontrer de problème normalement. Alors pour vérifier que notre clé étrangère fonctionne on nous demande de rajouter une entrée dans la table "Animal" :

et normalement je devrais avoir ce message :

Mais comme par "je ne sais qu'elle formule magique", ma clé étrangère ne fonctionne pas et la ligne qu'on essaie de créer pour voir si notre clé fonctionne est quand même rajouter à ma table alors que le moteur que j'utilise pour les deux tables et le "INNO DB". Et au cas où vous doutiez de moi, voici mon code pour créer la clé :

  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2018 à 11:11:21

@Benzouye : ok je te remercie pour ces précisions :)
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2018 à 12:18:04

fathismael a écrit: Toujours en attente d'un super-man ! Je suis bloqué et je n'aime pas avancé sur les autres cours quand je suis bloqué. @Benzouye une petite idée ?

Bonsoir tout le monde,

Je suis entrain d'étudier le chapitre 2 de la 2ème partie "Clés primaires et étrangères" et dans ce cours on nous demande de créer une table "espece" qui aura un lien avec la table "Animal" que l'on a déjà créée. Ce lien sera une clé étrangère que l'on crééra sur une colonne espece_id (appartenant à la table "Animal"). Après avoir suivi toutes ces instructions, je ne devrais pas rencontrer de problème normalement. Alors pour vérifier que notre clé étrangère fonctionne on nous demande de rajouter une entrée dans la table "Animal" :

et normalement je devrais avoir ce message :

Mais comme par "je ne sais qu'elle formule magique", ma clé étrangère ne fonctionne pas et la ligne qu'on essaie de créer pour voir si notre clé fonctionne est quand même rajouter à ma table alors que le moteur que j'utilise pour les deux tables et le "INNO DB". Et au cas où vous doutiez de moi, voici mon code pour créer la clé :



  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2018 à 12:22:47

@fathismael

Je te déconseille de mélanger PHP et SQL pour l'instant, reste en mode console ...

Si un animal avec un espece_id = 5 est inséré sans erreur , il n'y a que deux possibilités :

  • soit il existe dans la table Espece un id 5
  • soit il n'existe pas d'id 5 dans la table Espece, et la table Animal n'a pas de contrainte de clé étrangère active

Il faut vérifier que ta contrainte de clé étrangère a bien été créée.

Par exemple avec :

USE INFORMATION_SCHEMA;
SELECT TABLE_NAME,
       COLUMN_NAME,
       CONSTRAINT_NAME,
       REFERENCED_TABLE_NAME,
       REFERENCED_COLUMN_NAME
FROM KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = "le nom de ta base" 
      AND TABLE_NAME = "Animal" 
      AND REFERENCED_COLUMN_NAME IS NOT NULL;
  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
5 juillet 2018 à 13:29:42

@Benzouye

Pourquoi me déconseilles-tu d'utiliser PHP et MySQL ensemble ?

C'est la seule façon de faire que je connaisse. La console m'a paru bien plus compliquer !

Et j'aimerais bien si possible que tu me montres comment vérifier l'existence d'une clé étrangère en utilisant PHP!

Merci

  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2018 à 13:55:45

fathismael a écrit:

Pourquoi me déconseilles-tu d'utiliser PHP et MySQL ensemble ?

Pour suivre le cours normalement, apprendre à manipuler la console, et ne pas combiner les erreurs PHP et MySQL ...

fathismael a écrit:

La console m'a paru bien plus compliquer

Elle te permet pourtant de saisir directement tes requêtes sans te soucier de l'interface avec PHP ...

fathismael a écrit:

comment vérifier l'existence d'une clé étrangère en utilisant PHP

En exécutant la requête présentée plus haut.
  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
5 juillet 2018 à 15:33:38

Est-ce qu'il n'y a qu'avec le PHP que je peux utiliser l'extension PDO ? Par exemple, je ne pourrais pas l'utiliser avec le JAVA ?

Benzouye a écrit:

fathismael a écrit:

Pourquoi me déconseilles-tu d'utiliser PHP et MySQL ensemble ?

Pour suivre le cours normalement, apprendre à manipuler la console, et ne pas combiner les erreurs PHP et MySQL ...

En fait, j'ai voulu utiliser la console pour ce cours mais MySQL n'était pas placé dans le bon dossier (Il était dans le dossier WAMP). ce qui fait que quand j'essayais de me connecter au serveur grâce à la console, cette dernière m'affichait des erreurs et... j'ai un peu eu la flemme de chercher comment régler ce problème alors j'ai continué avec la méthode que je connaissais (PHP). Mais là, je suis entrain de télécharger un autre MySQL pour utiliser la méthode du cours. Ne pourrai-je pas déplacer celui de mon dossier WAMP pour suivre ce cours ?

fathismael a écrit:

La console m'a paru bien plus compliquer

Elle te permet pourtant de saisir directement tes requêtes sans te soucier de l'interface avec PHP ...

  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2018 à 16:56:38

fathismael a écrit:

Est-ce qu'il n'y a qu'avec le PHP que je peux utiliser l'extension PDO ?

Oui, PDO signifie PHP Data Object ...

fathismael a écrit:

je ne pourrais pas l'utiliser avec le JAVA ?

Non, mais Java dispose aussi d'API pour communiquer avec les base de données, notamment le connecteur JDBC ...

Mais le problème reste le même ... Entraîne toi avec la console ou au pire avec une interface graphique type Adminer, PHPMyAdmin, MySQL Workbench, etc.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
5 juillet 2018 à 17:18:25

OK ! Je te remercie infiniment.


Benzouye a écrit:

fathismael a écrit:

Est-ce qu'il n'y a qu'avec le PHP que je peux utiliser l'extension PDO ?

Oui, PDO signifie PHP Data Object ...

fathismael a écrit:

je ne pourrais pas l'utiliser avec le JAVA ?

Non, mais Java dispose aussi d'API pour communiquer avec les base de données, notamment le connecteur JDBC ...

Mais le problème reste le même ... Entraîne toi avec la console ou au pire avec une interface graphique type Adminer, PHPMyAdmin, MySQL Workbench, etc.



  • Partager sur Facebook
  • Partager sur Twitter
13 juillet 2018 à 15:56:28

Bonjour à tous, 

Je voudrais signaler quelque chose qui me semble incohérent...dans le chapiture 22, sur les conditions sur les fonctions d'agrégations.

Il est évoqué la fonction COALESCE() et il est dit qu'il ne faut pas que les lignes de regroupement retournent des valeur NULL, ce que je peux comprendre.

Ceci dit, le requête qui illustre cela dessous est une requête avec une jointure interne (donc avec INNER JOIN), or ce type de jointure, si je ne me trompe pas, est justement le type de jointure qui ne renvoie que les lignes pour lesquelles il y a des correspondances entre les tables...Donc on n'est pas censé avec des valeurs NULL de retournée. Pour cela, il y aurai fallu faire avec une requête avec LEFT JOIN ou RIGHT JOIN, qui elles, peuvent renvoyer des valeurs nulles.

Suis-je dans l'erreur ?

Merci de la réponse.

Cordialement

Dominique 

  • Partager sur Facebook
  • Partager sur Twitter

Dominique SAUVIGNON

13 juillet 2018 à 17:27:53

Bonjour,

Si tu parles de cette partie du cours : https://openclassrooms.com/fr/courses/1959476-administrez-vos-bases-de-donnees-avec-mysql/1967834-regroupement#/id/r-1985390

Alors l'exemple donné utilise un ROLL UP (rupture avec total) et c'est ce ROLL UP qui va retourner des valeurs NULL.

Dom2167 a écrit:

il est dit qu'il ne faut pas que les lignes de regroupement retournent des valeur NULL

Peux-tu pointer exactement la partie du cours où tu as lu cela ?

Après, ce n'est pas parce que tu as une jointure interne que tu n'auras pas de valeur NULL ...

Imagine ceci : la table animal contient des animaux sans date de naissance (la colonne a donc pour valeur NULL) ...

Si tu fais :

SELECT nom, COALESCE( date_naissance, 'Non renseigné' )
FROM animal;

Tu auras un joli "Non renseigné" au lieu d'un NULL pour les animaux sans date de naissance ...

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
3 août 2018 à 17:21:20

Bonjour.

Je suis actuellement en train de suivre activement le cours sur les BDD. Et je suis bloqué à la partie 7.

Lors du remplissage de la base de donnée

https://openclassrooms.com/fr/courses/1959476-administrez-vos-bases-de-donnees-avec-mysql/1960995-insertion-de-donnees

Il faut alors importer un fichier CSV.

Lorsque j’exécute ces lignes de commandes :

LOAD DATA LOCAL INFILE 'animal.csv'
INTO TABLE Animal
FIELDS TERMINATED BY ';' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(espece, sexe, date_naissance, nom, commentaires);

J'obtiens le message d'erreur suivant :

ERROR 1148(42000): The used command is not allowed with this MySQL version

J'ai fait quelques recherche et la totalité des solutions que j'ai essayé n'ont pas marché. J'ai même réessayer en me connectant à la Database avec l'utilisateur root  avec la ligne de commande suivante :

mysql -u root -p --local-infile somedatabase

Mais ça n'a pas fonctionné, j'ai toujours le même message d'erreur, et je suis dans l'impossibilité absolue d'importer ce fichier CSV dans ma base de donnée. Je pourrais contourner l'obstacle en ajoutant les données lignes par lignes, mais ça me frustrerais trop de ne pas régler ce problème ...

Je me demande si le problème ne vient pas du fait qu'on est à la version 8.0 de MySQL à présent ...

Merci d'avance,

J.R

-
Edité par julienroqueplo 3 août 2018 à 17:24:01

  • Partager sur Facebook
  • Partager sur Twitter
4 août 2018 à 19:03:35

Salut tout le monde!

Je ne sais pas si OC pratique la "magie informatique" (je viens d'inventer ce truc) mais il me semble fortement que ça soit le cas.

Je vous explique:

Je suis à la partie 4 de ce cours, c'est-à-dire la partie sur les fonctions temporelles et j'ai terminé les exos. Du coup je devais faire l'activité qui suit mais j'ai pris un peu de temps pour faire l'activité et passer à l'autre partie, genre 6/7 jours. Aujourd'hui, je me force à continuer et à faire l'activité mais voilà, l'activité a disparu du cours complétement. J'ai essayé de voir si l'activité fait partie du cours si l'on se déconnecte mais elle n'en faisait pas partie. En gros, on dirait que le cours a été soit mis-à-jour et donc l'activité n'était plus utile ou soit ils l'ont retiré que pour moi vu que je prenais trop de temps pour la faire. Quoi qu'il en soit, c'était une activité très intéressante. Je regrette vraiment de ne pas l'avoir fait quand elle était à ma portée. J'espere que quelqu'un m'aidera à la retrouver.

Et puis voilà ma question, est-ce que vous avez déjà rencontré ce genre de situation?

  • Partager sur Facebook
  • Partager sur Twitter