Partage
  • Partager sur Facebook
  • Partager sur Twitter

Impossible de MAJ une BDD depuis Github

Cours Implémentez vos bases de données relationnelles avec SQL

Sujet résolu
4 novembre 2021 à 11:48:44

Bonjour la communauté,

Dans le cours suivant "Implémentez vos bases de données relationnelles avec SQL", il nous est demandé de télécharger un fichier depuis Github pour mettre à jour notre BDD.

Malheureusement, je ne comprends pas les instructions du prof et j'ai besoin de votre aide, svp.

Lien vers les instructions (tout en bas de page) : https://openclassrooms.com/fr/courses/6971126-implementez-vos-bases-de-donnees-relationnelles-avec-sql/7142232-creez-votre-base-de-donnees-bdd

Lien donné dans la partie 2 du cours vers Github : https://github.com/OpenClassrooms-Student-Center/Course-implementez-BDD-SQL/blob/master/partie_2/foodly.sql

Comme je n'ai vu que du code et pas de fichier à télécharger, je suis remonté dans l'arborescence à .../partie_2/ et j'ai enregistré dans mon dossier Téléchargement sur mon pc le fichier foodly. sql

Est-ce c'était la manip à faire ?

Après, j'ai écrit la commande indiquée pour MAJ la BDD (mysql -u root -p nom_de_la_base_de_donnees < nom_du_fichier.sql) en renommant nom_de_la_base_de_données par Foodly, qui est donc le nom de ma BDD, et nom_du_fichier par foodly.sql, qui est donc le nom du fichier enregistré en local.

Soit, au final : mysql -u root -p Foodly < foodly.sql

Mais Mysql indique une erreur : ERROR 1064 (42000)

Pouvez-vous m'aider, svp ?

Par avance, merci

Bien à vous

-
Edité par MatthieuMaurice 4 novembre 2021 à 11:50:58

  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2021 à 14:44:46

si tu l'ouvres, il contient uniquement le code sql visible sur la page indiqué ou du code html (<!DOCTYPE html>) (je pencherai pour cette option)

la manip à faire, c'est plutôt de copier/coller le code affiché dans un fichier local.

  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2021 à 14:55:56

Hello,

Merci pour ta réponse.

Effectivement, c'est bien <!DOCTYPE html>.

Ok donc j'ai copié collé le code dans un fichier text (bloc-note) que j'ai renommé foodly.sql.

J'ai exécuté la commande... Et toujours rien.

Est-ce qu'il faut stocker le fichier dans un dossier en partculier ? Je veux dire, la commande, elle ne dit pas où aller chercher le fichier, non ?

Par avance, merci.

  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2021 à 15:11:59

MatthieuMaurice a écrit:

J'ai exécuté la commande... Et toujours rien

C'est à dire ? Une erreur ? Laquelle précisément (avec le texte complet) ?

  • 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 novembre 2021 à 15:48:13

si le fichier ne trouve pas à l'emplacement où tu lances la commande, il faut mettre le chemin complet du fichier (entre guillemet si le chemin contient des espaces, comme "c:\mon répertoire\mon sous répertoire\fichier.sql")
  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2021 à 17:50:41

Benzouye a écrit:

MatthieuMaurice a écrit:

J'ai exécuté la commande... Et toujours rien

C'est à dire ? Une erreur ? Laquelle précisément (avec le texte complet) ?


Lorsque j'excécute la commande mysql -u root -p Foodly < foodly.sql, rien n'indique dans la console Mysql que quelque chose s'est produit.

 

 umfred a écrit:

si le fichier ne trouve pas à l'emplacement où tu lances la commande, il faut mettre le chemin complet du fichier (entre guillemet si le chemin contient des espaces, comme "c:\mon répertoire\mon sous répertoire\fichier.sql")


Donc effectivement umfred, je pense que la commande ne permet pas d'uploader le fichier puisque le chemin d'accès n'y est pas indiqué.

J'ai essayé  mysql -u root -p Foodly < foodly.sql < "C:\Users\matth\Downloads\" mais de la même manière, Mysql n'indique aucun changement.

Est-ce que je l'ai bien écrite ?

-
Edité par MatthieuMaurice 4 novembre 2021 à 17:54:52

  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2021 à 18:46:10

euh ... 

mysql -u root -p Foodly < "C:\Users\matth\Downloads\foodly.py"

il va peut-être falloir retélécharger le fichier suite à ta commande. et cette commande est à faire dans l'invite de commande (cmd), pas dans le terminal mysql; sinon dans le terminal mysql, il faut utiliser

SOURCE "C:\Users\matth\Downloads\foodly.py"




  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2021 à 9:05:03

MatthieuMaurice a écrit:

 

Sur cette copie d'écran tu es déjà connecté à MySQL (l'invite est ->), tu as donc déjà lancé une commande mysql -h ... -u ... -p ... et atterri dans la console MySQL, tu n'es plus dans l'invite de commande Windows (l'invite est du genre c:\...>).

Ici MySQL attend deux points : pour marquer la fin d'une commande SQL et l'exécuter, c'est donc normal qu'il ne se passe rien.

Rappels pour importer des fichiers externes en ligne de commande MySQL :

https://openclassrooms.com/fr/courses/1959476-administrez-vos-bases-de-donnees-avec-mysql/1960995-inserez-des-donnees#/id/r-1960961

Sinon, cf. message de umfred ci-dessus ...

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
11 novembre 2021 à 15:44:26

Bonjour à tous les deux,

Merci pour vos réponses respectives.

C'est plus clair pour moi et grâce à votre aide j'ai réussi à exécuter la commande depuis la console Mysql via la commande SOURCE.

Cependant, l'exécution a fait apparaitre tout un tas d'erreurs et j'ai à nouveau besoin de votre aide, svp.


Le fichier est censé supprimer les deux tables aliment et utilisateur que le prof nous a fait créer durant la première partie du cours pour les remplacer par les mêmes mais avec de nouvelles données.

Après vérification, les tables utilisateur et aliment ont bien été supprimées par le fichier comme attendu mais elles n'ont pas été recréées avec les nouvelles informations comme attendu.

J'ai l'impression que l'on ne peut pas partager de PJ. Je vous mets donc le code contenu dans le fichier du prof ci-dessous.

NB : je pourrais manuellement tout recréer bien entendu mais je me dis que résoudre ce problème pourra m'aider ultérieurement si la situation se représente :)

-- MySQL dump 10.13  Distrib 8.0.21, for osx10.15 (x86_64)
--
-- Host: localhost    Database: foodly2
-- ------------------------------------------------------
-- Server version 8.0.21

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `aliment`
--

DROPTABLEIFEXISTS`aliment`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATETABLE`aliment` (
`id`intNOTNULL AUTO_INCREMENT,
`nom`varchar(100) NOTNULL,
`marque`varchar(100) DEFAULTNULL,
`sucre`floatDEFAULTNULL,
`calories`intNOTNULL,
`graisses`floatDEFAULTNULL,
`proteines`floatDEFAULTNULL,
`bio`tinyint(1) DEFAULT'0',
PRIMARYKEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `aliment`
--

LOCK TABLES `aliment` WRITE;
/*!40000 ALTER TABLE `aliment` DISABLE KEYS */;
INSERTINTO`aliment`VALUES (1,'pomme','sans marque',19.1,72,0.2,0.4,0),(2,'poire','sans marque',27.5,134,0.2,1.1,1),(3,'banane','chiquita',24,101,0.3,1.1,0),(4,'jambon','herta',0.2,34,0.8,6.6,0),(5,'compote','andros',11,51,0,0.5,0),(6,'steak haché','charal',0.8,68,4.8,4.8,0),(7,'saumon','guyader',0,206,12.3,22.1,0),(8,'haricots verts','bonduelle',5.8,25,0.1,1.5,0),(9,'riz','oncle benz',28.2,130,0.3,2.7,0),(10,'pâtes completes','barilla',64,353,2.7,14,1),(11,'blanc de dinde','père dodu',0.6,98,0.9,22,0),(12,'filet de poulet','le gaulois',0,121,1.8,26.2,0),(13,'muesli','bjorg',26.5,170,5,3.5,1),(14,'café','carte noire',0,0,0,0,0),(15,'jus d\'orange','innocent',16,74,0,1.6,0),(16,'jus de pomme','andros',24,100,0.2,0.2,1),(17,'pomme de terre','doréac',21.1,104,0.2,2.8,0),(18,'oeuf','naturalia',0.4,74,5.1,6.5,1),(19,'baguette','sans marque',36.1,185,1.2,7.5,0),(20,'lait d\'amande','bjorg',6.1,80,5.3,1.5,1);
/*!40000 ALTER TABLE `aliment` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `utilisateur`
--

DROPTABLEIFEXISTS`utilisateur`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATETABLE`utilisateur` (
`id`intNOTNULL AUTO_INCREMENT,
`nom`varchar(100) DEFAULTNULL,
`prenom`varchar(100) DEFAULTNULL,
`email`varchar(255) NOTNULL,
PRIMARYKEY (`id`),
UNIQUEKEY`email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=11DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `utilisateur`
--

LOCK TABLES `utilisateur` WRITE;
/*!40000 ALTER TABLE `utilisateur` DISABLE KEYS */;
INSERTINTO`utilisateur`VALUES (1,'durantay','quentin','qentin@gmail.com'),(2,'dupont','marie','marie@hotmail.fr'),(3,'miller','vincent','vm@yahoo.com'),(4,'zuckerberg','marc','marc@gmail.com'),(5,'paul','pierre','pp@orange.fr'),(6,'de vauclerc','lisa','lisadv@gmail.com'),(7,'gluntig','éléonore','glunt@sfr.com'),(8,'cavill','henry','henry@outlook.fr'),(9,'hopper','lionel','hpp@gmail.com'),(10,'tember','fabienne','fabienne@yopmail.com');
/*!40000 ALTER TABLE `utilisateur` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2020-11-29 12:18:45

Savez-vous ce que je peux faire pour résoudre cela, svp ?

Par avance, merci.

-
Edité par MatthieuMaurice 11 novembre 2021 à 16:03:58

  • Partager sur Facebook
  • Partager sur Twitter
15 novembre 2021 à 9:05:42

Quelque chose me paraît bizarre ici ... Normalement l'import ne devrait pas fonctionner vu les 4 erreurs (ERROR) citées en premier.

Le cours précise bien que sur Windows il faut remplacer les \ par des / : https://openclassrooms.com/fr/courses/1959476-administrez-vos-bases-de-donnees-avec-mysql/1960995-inserez-des-donnees#/id/r-3227876

La commande serait donc :

mysql> SOURCE C:/Users/matth/Downloads/foodly.sql

L'autre surprise c'est l'erreur sur la collation utf8mb4_0900_ai_ci. Cet encodage apparait sur la version 8.0.1 de MySQL je suppose donc que tu dois avoir une version plus ancienne (5.7 ?).

Si c'est le cas, il faut remplacer utf8mb4_900_ai_ci par utf8mb4_unicode_ci dans tout le code SQL du fichier, ou faire une montée de version de MySQL ...

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
19 novembre 2021 à 14:26:00

Hello,

Merci pour ton retour Benzouye :)

Grâce à ton dernier post, j'ai compris que j'avais effectivement la version 5.6 que j'avais téléchargé et installé en suivant le cours vers lequel renvoie ton lien. Puis j'avais changé pour un cours plus court de 6H qui, lui, fonctionne sur la v8 et qui fait donc l'objet de ce topic. Donc bien vu. :)

J'ai finalement installé la v8 après avoir effacé la BDD et désinstallé la v5.

Puis j'ai exécuté la commande SOURCE en remplaçant les \ par les / pour créer la nouvelle BDD avec les tables. Je n'ai pas changé le utf8mb4_0990_ai_ci auquel tu as fait référence puisque j'ai finalement installé la v8.

Malheureusement, l'import du fichier sql n'a toujours pas fonctionné.

Et c'est après que j'ai compris, en regardant dans le code SQL du fichier à importé.

En plus de ne pas être la même version (et donc de devoir changer la ligne de code utf8 mentionné plus haut), le nom de la BDD inclus dans le fichier n'était pas le même que celui que j'avais donné à ma BDD.

Effectivement, ça ne pouvait pas fonctionner (goutte de sueur - haha)

Donc pour ceux qui liraient éventuellement ce topic, et qui comme moi débutent, pensez à vérfier à la fois la version MYSQL qui vous utilisez (potentiellement ça peut avoir un impact apparemment) mais surtout, quand vous suivez le cours, attribuez à la BDD que vous créerez le même nom de BDD que celle du prof ^^

Encore merci pour votre aide.

  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2021 à 11:05:05

Bonjour,

Pourrais-tu détailler la résolution de ton problème, stp ?

Je suis le même cours, mais reste bloqué. J'ai suivi toutes les étapes détaillées dans ce thread, mais sans succès.

- J'ai Mysql 8.0

- J'ai sensiblement le même message d'erreur. Une erreur 1046 et non pas 1146 cependant, car il ne trouve même pas la BDD

- J'ai même mis le fichier sql dans mon C:/Users/ directement, pour éviter tout éventuel problème de chemin.

- On dirait que le nom de la BDD dans le fichier sql n'est pas foodly, mais... foodly2 ?

- J'ai essayé la commande SOURCE C:/Users/foodly.sql, mais j'ai eu

mysql> SOURCE C:/Users/foodly.sql;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

ERROR 1046 (3D000): No database selected
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

ERROR 1046 (3D000): No database selected
Query OK, 0 rows affected (0.00 sec)

ERROR 1046 (3D000): No database selected
ERROR 1046 (3D000): No database selected
ERROR 1046 (3D000): No database selected
ERROR 1046 (3D000): No database selected
Query OK, 0 rows affected (0.00 sec)

ERROR 1046 (3D000): No database selected
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

ERROR 1046 (3D000): No database selected
Query OK, 0 rows affected (0.00 sec)

ERROR 1046 (3D000): No database selected
ERROR 1046 (3D000): No database selected
ERROR 1046 (3D000): No database selected
ERROR 1046 (3D000): No database selected
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)


J'ai aussi essayé la commande

mysql> -u root -p foodly < foodly.sql;
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 '-u root -p foodly < foodly.sql' at line 1

Mais aussi, au cas où

mysql> foodly < foodly.sql;
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 'foodly2 < foodly.sql' at line 1

Et toutes ces commandes en version "foodly 2" plutôt que "foodly", suite au nom inscrit dans la DB, avec les mêmes résultats.

J'ai aussi changé le "Database: foodly2" dans le code pour un "Database: foodly", pour retester en ce sens, même résultat.

Si tu peux partager l'exacte ligne de code que tu as utilisé, ça sortirait d'autres débutants de ces problèmes, et on te remercierait tous !

  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2021 à 12:51:15

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL