Étiquette : base de données

[Magento 2] Modifier les stocks directement depuis la base de données

Source: Magento 2, Database Level Inventory Management. Version PDF pour la postérité: danjoseph.me-Magento 2 Database Level Inventory Management.

Retrouver un produit dans la table cataloginventory_stock_item

Utiliser la valeur de product_id qui est visible dans le DOM lorsque le produit est sélectionné, en tant que valeur d’un attribut value pour l’élément input name="selected_configurable_option".

Quelques notes:

  • La valeur de la clé is_in_stock dans la table cataloginventory_stock_item doit rester à 1 si vous souhaitez que la configuration de votre produit reste visible dans l’élément SELECT.

[Magento 2] Eviter la redirection automatique de mon instance locale vers la prod lorsque j’affiche une page dans mon navigateur

Pour le frontoffice

Dans la table core_config_data, faire une recherche sur l’URL vers laquelle vous êtes redirigé et remplacer toutes les occurrences (au moins les « unsecure » qui sont préfixées par http) par votre URL locale.

Pour le backoffice

Dans la table core_config_data, rechercher (n’importe où) | LIKE %% | url.

Vérifier que la ligne contenant le path admin/url/use_custom est à 0.

Ensuite, pour toutes les lignes où l’URL déclarée dans la colonne value est celle du domaine vers lequel on est redirigé, remplacer toutes les occurrences par votre URL locale.

Pour finir, exécuter la commande $ php bin/magento ca:cl config.

[Docker] Importer une base de données en copiant le fichier SQL dans le container DB avec docker cp

Nous allons utiliser la commande docker cp pour copier un fichier disponible sur notre host dans un dossier tmp du container guest:

Puis se connecter au container db et taper la commande:

ATTENTION: vous allez probablement obtenir un message mysql: [Warning] Using a password on the command line can be insecure.. Votre dump sera tout-de-même importé.

pour la petite histoire, les volumes ça s’exprime sous la forme host:guest. guest est toujours un chemin absolu. host peut être :

  • un path absolu (/bidule/…) ou relatif (./bidule, ../bidule) => un dossier ou un fichier du host est monté sur le path du guest
  • un nom (mysql-data, pas de référence absolue ou relative) => il s’agit d’un volume nommé, on n’interagit pas avec, c’est géré de manière transparente pour toi par docker. Tu peux le voir via docker volumes ls, c’est stocké normalement dans /var/lib/docker/filesystems/… ou un truc du genre

[Docker] Faire un dump d’une table spécifique dans une base de données et récupérer le contenu dans un fichier txt hors container

Note: pour faire la même chose, mais via mysql: Dump a specific table or few rows (MySQL). $ mysqldump -u username -ppassword database_name table_name > single_table_dump.sql

Faire un dump d’une table spécifique via un container db Docker:

Log toi dans le container db

après : $ mysqldump  -uroot -proot magento core_config_data --tab="/tmp" --fields-enclosed-by='"' --fields-terminated-by=,

ce qui nous intéresse, c’est le fichier /tmp/core_config_data.txt qui sera généré. tu le copie via docker cp.

ça doit te donner un rendu qui ressemble à ça (sample):

Récupérer le contenu du dump dans un fichier TXT avec la commande docker cp:

Sortir du container db. On se retrouve à la racine de notre projet.

en décomposant : $ docker cp nom_du_container:path_dans_le_container path_local (. == l'endroit où tu es)

Le fichier core_config_data.txt devrait être disponible à la racine de notre projet (où à l’endroit depuis lequel la commande ci-dessus a été exécutée).

[RBS Cooking] Effectuer un dump d’une base de données et récupérer le fichier dans le répertoire du projet sur sa VM

…où polethermal est le nom du projet dans l’exemple ci-dessous :

A l’éxecution de cette commande, la machine nous fournit une URL temporaire vers le dump de la base.

Pour le déplacer à la racine du projet sur notre VM :

Restaurer au base de donnée dont le dump se trouve à la racine de notre projet

Vérifier la présence d’un dump en prod et le télécharger en local

[Sans cook] Restaurer une base de donnée à la main

Manipulation valable pour n’importe quel CMS (Magento, Drupal, WordPress, …).

A la racine du dossier contenant votre fichier docker-compose.yml, créer un dossier dump et placez-y le dump de votre base de données. Dans mon exemple, mon projet est manbow et le libellé de mon dump est: prod.2019-03-20.sql.gz

Dans le fichier docker-compose.yml, sous la section services > db > volumes (et, si la ligne existe, sous - mysql-data:/var/lib/mysql) ajouter la ligne:

Depuis la racine du dossier qui contient le fichier docker-compose.yml, lancer le container:

Se connecter en bash au container de la db:

Se rendre dans le dossier contenant le dump:

Lancer la commande de restoration de la base:
(username et password sont récupérables dans le fichier docker-compose.yml, sous la section services > db > environment)

Exécuter les commandes clear-all; compile-all; de Change.

[Sans cook] Si le front affiche l’erreur ERR_CONNECTION_REFUSED

  • Vérifier que l’URL de votre site en BO correspond bien à celle que vous tapez dans le navigateur.
  • (VirtualBox > Windows) Vérifier que l’IP de votre machine virtuelle (eth1) est bien celle que vous déclarez dans le fichier hosts de Windows.
  • Vérifier que l’URL de votre site en BO correspond bien à celle que vous avez ajouté au fichier hosts.

Tenter de désactiver le protocole https:

Dans le container de la db, pour la db concernée:

Dans le container Change (ou via cook) :

[Magento] Remplacement d’une base de données et modification de l’URL d’un site

Note : L’ensemble des commandes SSH de ce tuto sont à taper à la racine de votre projet.

Avec magerun (méthode la plus efficace)

Supprimer la BDD existante, en recréer une vide, importer la nouvelle BDD :

Sans magerun

Si la nouvelle base de données est fournie sous forme d’archive *tar.gz

Décompresser l’archive à la racine de votre projet :

  • avec n’importe quel utilitaire de type Winzip, Winrar, 7zip…
  • …ou décompresser l’archive en tapant la ligne de commande suivante :

Si la nouvelle base de données est fournie sous forme d’archive *.gz

Notez bien le nom du fichier ma_nouvelle_base_de_données.sql que vous venez de décompresser. Vous en aurez besoin dans un instant…

Remplir les tables avec la nouvelle base fraîchement copiée

Pour modifier (où simplement obtenir) les username, password et dbname de votre base de données taper la commande :

Les informations dont vous aurez besoin sont renseignées entre les balises suivantes :

Notez que ce fichier doit également contenir l’URL local de votre site :

Commande SSH à exécuter pour déployer la base :

Attention, lorsque mysql est dockerisé, rajouter un paramètre -h db. La commande suivante sue joue à l’intérieur du conteneur !

Lancer, toujours ds le Docker, le script configurator, qui permet de setter la config (notamment de mettre à jour les URLs) projet :

Exemple :

Attention : -p et le mot de passe doivent être collés !!

Remarque : il reste possible que la commande fonctionne sans qu’on ait besoin de renseigner le mot de passe.

Changer les URLs de la nouvelle base que vous venez d’importer dans votre projet par vos URLs locales

Se connecter à un PhpMyAdmin qui permet d’administrer les tables du projet Magento

Méthode 1:

magento-modifier_URL_bdd

Si le site possède plusieurs Store Views (multilangue) :

Sous phpMyAdmin, dans le champ textarea de l’onglet SQL, taper :

Que faire dans le cas où le contenu des pages s’affiche dans le navigateur mais que les ressources CSS et JS ne sont pas chargées ?

Dans cet ordre :

  1. Afficher la source dans le navigateur (ctrl + u) et vérifier que la racine des URLs vers lesquelles pointent vos ressources CSS et JS est similaire à l’URL du site.
    Dans l’exemple ci-dessous, ce n’est pas le cas :

    magento_bdd-url_error

    Si la racine des URLs vers lesquelles pointent vos ressources CSS et JS est différente de l’URL du site :

    Rendez-vous en base de données et dans la table core_config_data effectuer une recherche (onglet Rechercher) dans la colonne value avec comme opérateur LIKE %…% et comme valeur le libellé de la racine de votre URL (dans notre exemple : media.xxx.com).

    magento_bdd-bad_url_search

    Vous devriez vous retrouver avec les résultats suivants (les URLs dans la dernière colonne de la capture sont déjà modifiées :

    magento_bdd-edit_url

    Editez les URLs dans la dernière colonne comme suit :
    Pour base_xxx_url dans l’avant-dernière colonne, mettrez <url_de_la_racine_de_mon_site>/xxx/ dans la dernière colonne.

  2. Vérifier en backoffice que les caches sont désactivés. System > Cache Management. Attention : j’ai eu un cas où les caches étaient, à priori, désactivés mais lorsque j’ai cliqué sur le bouton « Flush Magento Cache » (1er bouton en haut à droite, au-dessus du tableau) tout est repassé en ENABLED !
    En ligne de commande, on peut supprimer les caches de la manière suivante :

  3. Eventuellement, jouer sur la compression des ressources CSS et JS.
    System > Configuration > (Sidebar) encart ADVANCED > entrée Developer > volets « Merge JavaScript Files » et « Merge CSS Files » à No.

Méthode 2:

Sélectionner la table core_config_data relative à la base de données de votre projet.

Trouver un mot-clé présent dans toutes les URLs qu’on souhaite changer et effectuer une recherche à partir de celui-ci (cf. illustration ci-dessous avec le mot-clé ‘netapsys’) :

  • Onglet Rechercher
  • Dans le tableau, dernière rangée ‘value’ sélectionner l’opérateur LIKE %…%
  • Mettre votre mot-clé dans la colonne ‘Valeur’

01

…puis éditer les URLs souhaitées parmi celles qui s’affichent dans la liste des résultats de recherche.

Se connecter au backoffice du projet Magento.

  • Catalogue > Gérer les produits
  • Sélectionner tous les éléments de la colonne ‘Nom’ qui n’ont pas d’URL de spécifié dans la colonne ‘Sites web’
  • En haut à droite du tableau, champ ‘actions’ choisir ‘Mettre à jour les attributs’

02

  • Dans la colonne de gauche ‘Informations produits’ sélectionner l’entrée ‘Sites web’
  • Cocher la case qui correspond au site qui vous intéresse dans le groupe de champs ‘Modifier les attributs > Ajouter le produit aux sites web’
  • Cliquer sur sauvegarder

03