> Tous les forums > Forum Forum des Webmasters
 Table crachées
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
jmsch
  Posté le 13/09/2017 @ 11:45 
Aller en bas de la page 
Petit astucien
Bonjour,

Depuis 1 mois je rencontre assez régulièrement un problème de tables craché (pas toujours la même table) sur mon facturier. Le facturier fonctionne depuis 2010 sans problème et je n’ai pas fait de mise à jour récente qui pourrait expliquer ces crachs.

Ce facturier est utilisé sur 2 PC différents.

La base de données se trouve sur une clé USB, je ne peux pas la mettre en ligne cause pas de réseau accessible depuis PC2.

Le tout est programmé en PHP et fonctionne via WampServer.

Version PHP est 5.5.12

Version MYSQL 5.6.17

Version Apache 2.4.9

Au début, je fessais juste une réparation de la base et ça fonctionnais à nouveau or plus le temps passe plus j’ai l’impression que ça s’aggrave.

Dernièrement j’ai fait une réparation des tables et je me suis retrouvé avec toutes les tables vides. Grrrrr heureusement j’ai des sauvegardes régulières.

J’exclus un problème de clé USB défectueuse car je l’ai remplacé par une nouvelle et ça continue à cracher.

Pourquoi ça a fonctionné depuis 2010 sans problème et depuis 1 mois ça bug régulièrement alors que je n’ai rien changé ?

Une mise à jour Windows ou Firefox pourrait-elle être la cause du problème ?

Quelqu’un aurait-il une piste, des idées…. ?

Merci

Publicité
Malcolm
 Posté le 13/09/2017 à 19:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

Sans plus d'infos, difficile à dire.

que signifie "crash" : est-ce MySQL qui plante ? Apache ? un autre outil ? Un service ?

Y a-t-il un événement dans les journaux windows ? un fichier de log quelque part ? un dump du crash ?

Est-ce qu'il n'y a pas de micro coupures du port USB (genre mise en veille) ?

quel est ce logiciel, est-il toujours suivi/supporté ?

zoulouman
 Posté le 13/09/2017 à 20:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut,

Une base stockée sur une clé USB, ce n'est pas une excellente idée. Il suffit que l'écriture différée soit activée pour que ça crée de gros problèmes. Avec l'écriture différée, Windows garde dans un coin les données à écrire sur la clé et il le fera quand ton PC ne sera pas occupé. La base n'est donc pas mise à jour en temps réel et elle peut l'être en partie seulement.

Le cache de la base indiquera une base à jour mais la base elle même sera dans un état inconnu. Un simple redémarrage ou arrêt du service MySQL et c'est le crash de ta base qui ne sera pas complète.

Windows ne connait pas le service Mysqld de WAMP, il ne sait pas comment gérer les accès disques de ce service et considère ça comme de vulgaires accès à des fichiers, il faut donc utiliser ce service sur un disque dur pour avoir des accès en temps réel. Le cache USB de Windows ne se prête pas à ce genre d'exercice.

J'imagine que tu places ta base sur une clé pour pouvoir l'utiliser sur un PC ou sur un autre, c'est encore une très mauvaise idée ! La base doit être gérée par un service MySQL, pas par deux. A plus forte raison si les versions sont différentes. Pour utiliser une base sur une machine puis une autre, il faut passer par l'export/import ce cette base.

Passe donc par un lecteur réseau qui contiendra la base gérée par un seul service MySQL en permanence et qui sera accessible depuis toutes les machines du réseau.

Passer directement la clé d'un serveur SQL à un autre sans export/import, c'est prendre des risques. MySQL stocke et utilise des informations dans des bases et tables qui sont propres à chaque serveur, pas à deux.

En dernier recours, tu as testé ta mémoire ? MySQL fait énormément de cache mémoire pour rester rapide. Le souci est peut-être là.

Malcolm
 Posté le 13/09/2017 à 21:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

je précise ton propos : "Une base MySQL stockée sur une clé USB, ce n'est pas une excellente idée". Car il existe d'autres moteurs de base de données, comme SQLite par exemple (utilisé entres autres pour firefox) qui peuvent très bien se stocker sur clé USB

jmsch
 Posté le 14/09/2017 à 12:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour et merci à vous tous pour vos réponses. Je vais essayer de voir tout ça ce wk.

Pour la base de données sur clé USB je sais que c pas génial mais c la seule solution que j'ai trouvée pour y accéder depuis le PC2. Comme je l'ai dis plus haut je n'ai pas de connexion internet sur le site PC2. Si j'avais une connexion internet j'aurais tout mis en ligne. Lol

Malcolm
 Posté le 14/09/2017 à 15:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Tu peux toujours mettre la BDD sur un des 2 pc, et y accéder en 127.0.0.1 sur celui qui la stocke et en ip LAN sur l'autre PC.



Modifié par Malcolm le 14/09/2017 15:52
zoulouman
 Posté le 15/09/2017 à 07:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Ah ben voilà, c'est bien ça. C'est une base données sur USB qui jongle entre 2 serveurs de base (SGBD).

Tant que tu passeras ta base d'un serveur à un autre, tu te heurteras à ce type de problème.

Il ne faut pas passer ta base sur clé USB d'un PC vers l'autre comme tu le fais. Tu as vu le résultat.

Si tu as un réseau local, fais comme suggéré par Malcolm.

Sinon, si pas de réseau du tout, il te faut un serveur SQL sur chaque machine et chaque machine qui possède une base bien à elle. Ensuite, tu passes par les exports/imports pour mettre à jour la base qui doit l'être.

Comme tu procèdes là, en passant la clé USB d'un serveur vers un autre, tu finiras par perdre ta base un jour où l'autre...

EDIT

Pour avoir un réseau, tu peux très bien créer un point d'accès WiFi sur le PC contenant le serveur de base. De cette façon, tu auras ton réseau local.

Ce n'est pas la solution la plus sécuritaire et efficace, mais c'est une solution. Si tu n'as que ça, pourquoi pas ?



Modifié par zoulouman le 15/09/2017 07:48
jmsch
 Posté le 15/09/2017 à 12:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je vois que ça ne va pas être si simple que ça a faire. Sur PC1 pas de problème j'ai le réseau WiFi et tout ce qu'il faut.

Sur PC2 j'ai rien pas de réseau pas de Wi-Fi pas de ligne téléphonique sur le bâtiment et trop éloigné pour se connecter à PC1.

zoulouman
 Posté le 17/09/2017 à 15:20 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Une clé USB WiFi pour le second PC ne représente pas un investissement énorme. Même une clé d'occase peut faire l'affaire, inutile d'investir dans du matériel hors de prix. Ce qui t'intéresse, c'est de lier un PC à sa base de données, pas de visionner des vidéos HD en streaming.

Sinon, il ne te reste qu'une solution. Avec PhpMyAdmin, tu exportes ta base sur une clé USB et tu l'importes sur l'autre PC.

Si tu passes régulièrement d'un PC à un autre, je ne te cache pas que ça va vite devenir pénible... (même en créant un script PHP qui ferait le boulot à la place de PhpMyAdmin)

Les exports/imports de temps à autre, c'est bien quand on migre une base pour une raison X ou Y. Faire ça au quotidien, tu en auras vite ras le bol...

Bon courage !



Modifié par zoulouman le 17/09/2017 15:21
Publicité
jmsch
 Posté le 17/09/2017 à 17:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Le script php pour l'import exporter existe déjà mais je confirme que c'est pas envisageable d'exporter importer à chaque fois. Faudrait le faire 2 à 3 fois par jour.

La clé USB Wi-Fi pourquoi pas mais je ne vois pas comment ça pourrait fonctionner..... Éventuellement une clé 3G ou 4G.

Malcolm
 Posté le 17/09/2017 à 18:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Salut,

pas moyen subtiliser un autre moteur sql type SQLite ?

jmsch
 Posté le 17/09/2017 à 18:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Faut que je vois les changements que ça va entrainer car je ne connais pas SQLite.
Mes scriptes vont il continuer à fonctionner avec SQLite ?

zoulouman
 Posté le 18/09/2017 à 08:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Si tu passes de MySQL à SQlite, c'est très simple, il faut reprendre tout ton code et modifier chaque fonction SQL et, bien sûr, créer une base SQLite à la place de l'autre.

Avec WAMP, SQLite n'est pas activé par défaut. Il te faut activer dans PHP PDO_SQLite ou SQLite3, au choix.


Tu ne vois pas quoi avec la clé WiFi ? Qu'est-ce que la 3G/4G vient faire ici ?

Sur le PC contenant la base, tu crées un point d'accès WiFi et l'autre PC se connecte à ce point d'accès.

Malcolm
 Posté le 18/09/2017 à 10:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Si tu passes de MySQL à SQlite, c'est très simple, il faut reprendre tout ton code et modifier chaque fonction SQL et, bien sûr, créer une base SQLite à la place de l'autre.

Normalement, non, pas du tout !

si ton application est bien codée, c'est fait en 5 min ... Testé et approuvé ça sous-entend un usage de PDO par exemple, et tu n'as que la connexion à changer.

jmsch
 Posté le 18/09/2017 à 14:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

En réponse à Zoulouman,
pourquoi je parlai de 3g/4g tout simplement car c'est le seul mode de connexion que j'ai de disponible sur le site ou se trouve PC2.
Et comme PC1 et PC2 sont distant de près de 800 mètres pas possible avec une clè Wifi.

Pour le codage ça devrait aller, j'utilise PDO. Si il suffit de changer le code de connexion.
Je vais voir pour cette solution là.

Malcolm
 Posté le 18/09/2017 à 15:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

il faut tout de même créer ta base en fichier SQLite, histoire de l'avoir en local (il y a peut-être des scripts pour convertir MySQL en SQLite d'ailleurs).

Mais une fois ceci fait, il te faudra juste changer ton connecteur MySQL pour un SLQite, et activer le mode SQLite comme t'a dit zoulouman. Et tu utiliseras une base "locale" en fichier unique, comme le font iTunes ou Firefox.

jmsch
 Posté le 18/09/2017 à 18:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je ne te suis plus, dans ton dernier poste tu dis,

Et tu utiliseras une base "locale" en fichier unique...

La base sera bien sur une clé USB et sera utilisé sur 2 PC différents avec SQlite installé sur chaque PC.

Publicité
Malcolm
 Posté le 19/09/2017 à 09:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

SQLite ne "s'installe pas", c'est juste un module à activer dans l'installation de WAMP. Pas de service, bref, pas comme MySQL.

La base de données est forcément écrite dans un fichier, dans MySQL ce sont des fichier myi, myd, etc. et dans SQLite, c'est un seul fichier unique qui contient les tables et leurs données.

La différence entre les 2, c'est que pour MySQL tu as besoin d'avoir un service / binaire MySQL dédié qui tourne, alors que l'autre est un simple module de PHP, comme si c'était une fonction native.

Donc, partant de là, tu comprendras aisément que quel que soit le moteur SQL choisi (MySQL, SQLite, Oracle, SQL Server ...) il faut forcément avoir sous forme "matérialisée" sur le disque dur des fichiers pour contenir la structure des tables et les données. Dans SQLite (puisque nous parlons de lui) le tout tient dans un seul fichier que tu peux nommer à ta guise (par exemple db.sqlite ou truc.muche), le tout étant de donner au driver PDO le bon nom de fichier + emplacement à ouvrir

La différence avec MySQL, puisqu'il n'y a pas de binaire qui tourne, c'est que le fichier n'est verrouillé que lors des accès (contrairement aux fichiers MySQL qui sont verrouillés tant que MySQL est chargé en mémoire, qu'on y ait accès ou non).

Et de là, tu pourras copier sur ta clé USB le fameux fichier, indiquer à PHP dans ton script son nom et emplacement, et l'utiliser partout où tu veux.

zoulouman
 Posté le 19/09/2017 à 20:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Malcolm a écrit :

Si tu passes de MySQL à SQlite, c'est très simple, il faut reprendre tout ton code et modifier chaque fonction SQL et, bien sûr, créer une base SQLite à la place de l'autre.

si ton application est bien codée, c'est fait en 5 min ...

Sous WAMP avec PHP 5.5, je doute que PDO soit utilisé.

EDIT

Ah non, c'est bon, PDO est utilisé. Du coup, ça va.

Ca change de voir des personnes qui codent correctement !



Modifié par zoulouman le 19/09/2017 20:47
jmsch
 Posté le 20/09/2017 à 11:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Coder correctement voilà une chose pas facile à faire pour un novice. Heureusement j'avais un ami qui m'a mis sur les bon rails cars je n'y connaissais rien au début. (2009)

J'ai essayé de faire au mieux. PDO, smarty, php Mailler, FPDFLIL, jpgraph

Au fil du tps mon apli est devenu très complète. de demande de devis reservation en ligne envoie par émail du devis format PDF au client. Prise en compte des devis validé si acompte payé et affichage des réservation jours apres jour dans un planning. Facturation suivant devis en fin de séjour. Gestion des paiements acomptes et solde. Relance des impayés. Dernièrement rajout d'un module de statistiques complet.........

Bref au fil du temps c devenu une application très complète pour la gestion d'une pension.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !

Sujets relatifs
CSS autre que "table"/formulaire contact
affichage table par odre alphabétique
Suppression champs table selon critère
Optimiser requête lourde (Copying to tmp table ?)
Différence ...< div > VS < table >
2 champs liés à une table
Urgent : optimisation de table
déplacement de données d'une table à une autre
masquer une colonne d'une table
table php
Plus de sujets relatifs à Table crachées
 > Tous les forums > Forum Forum des Webmasters