Table trop "massive"...

Table trop "massive"... - SQL/NoSQL - Programmation

Marsh Posté le 04-11-2004 à 11:58:02    

Bonjour, voilà il m'est impossible d'effectuer des requêtes sur une table via le driver Paradox d'odbc (appelé dans du code php) car elle est trop "massive", si j'enleve des données tout se passe bien mais sinon j'obtiens un message d'erreur:

Code :
  1. Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Paradox] Erreur inattendue du pilote de base de données externe (12034)., SQL state S1000 in SQLExecDirect


 
 
Donc ma ptite question c'est de savoir s'il y a un moyen de corriger ce problème pour que je puisse effectuer des requêtes sur cette table, sachant que la connexion est établie.
 
Merci d'avance  :)


Message édité par BenjiiP le 04-11-2004 à 12:05:52
Reply

Marsh Posté le 04-11-2004 à 11:58:02   

Reply

Marsh Posté le 04-11-2004 à 12:26:02    

Essaie de passer par une vue, qui filtre déjà les lignes. Avec un peu de pot...
 
Ceci-dit, à mon avis, t'as guère d'autre choix, à terme, que de passer à un SGBD un peu plus puissant, parceque si mes connaissances sont exactes, Paradox n'a de mieu qu'Access que le fait que c'est pas Microsoft, non ?

Reply

Marsh Posté le 04-11-2004 à 12:30:21    

Je dois avouer que je ne m'y connais pas trop encore en SGBD mais malheureusement je ne peux en changer car je me base sur des tables deja existante utilisée par un autre logiciel :/

Reply

Marsh Posté le 04-11-2004 à 13:36:58    

Je suis tout à fait d'accord pour la limitation de l'existant, c'est un problème que je rencontre régulièrement (par contre, pas avec cette limitation, qui me semble tout de même assez important pour mériter étude d'un changement, car un jour le logiciel existant rencontrera certainement le même problème...)
 
Alors, plusieurs solutions possibles :
1) Etudider la faisabilité d'une upgrade de la base existante vers un autre SGBD plus performant et plus puissant (Oracle, MSSQL Server, DB2, etc. Evite MySQL qui risque d'apporter trop de limitation et interdire la faisabilité d'une telle migration). Si le soft en question est correctement écrit, alors il n'y aura peut-être même pas besoin de toucher au programme lui-même (s'il utilise un pont OLE DB ou ODBC par exemple, à 99% le code du soft ne sera pas impacté par le changement de la base)
 
2) Si ce n'est pas possible (pas le budget, trop de choses à modifier dans le soft existant, refus de la part de l'éditeur du soft, etc.) alors tu as la solution de créer un autre serveur de base de données, courrament appelé "INFOCENTRE". Il s'agit d'un autre serveur (avec le même SGBD ou non) qui contient les données dont ont besoin les programmes annexes, sous la même forme, ou une forme plus facilement exploitable, et filtrées. Ce type de serveur est généralement synchronisé par batch une fois par jour. Cela demande pas mal de boulot en plus, mais cela à l'avantage de ne pas toucher à l'existant, et d'ensuite bénéficier d'une base de données propre et aisément utilisable par les autres interfaces (BO, site web, outils de reporting, etc.)
 
3) Contacter l'éditeur de Paradox afin d'en savoir plus sur cette erreur, afin de savoir s'il existe un patch pour y rémédier (mise à jour du moteur du SGBD, ou mise à jour du drivers)
 
Dans tous les cas, si Paradox supporte les vues je te conseille de commencer par cette solution : ça te permettra de lire dans une "table virtuelle" dont les lignes sont déjà filtrées et donc moins volumineuses. Ca pourrait résoudre ton problème (et en plus c'est plus rapide, et ça ne change rien à la volumétrie des données, et les données sont rafraîchies en temps réel)

Reply

Marsh Posté le 04-11-2004 à 14:02:50    

Je pense que le problème ne vient pas de Paradox mais du pilote d'ODBC puisque le programme principal n'a aucun probleme lui pour effectuer des requêtes sur cette table et passe par un centre d'administration Borland apparemment. Mais bon, je vais essayer de passer par les vues pour voir si cela peut m'aider à avancer, encore merci à toi :)


Message édité par BenjiiP le 04-11-2004 à 14:06:02
Reply

Marsh Posté le 04-11-2004 à 15:10:05    

Apparement ce n'est pas une question de taille apres revérification du fichier principale, il fait 1100 Ko alors que d'autres tables font 18000 Ko, par contre la table qui me pose probleme fait appel a plein d'aytres fichiers, bien plus que pour les autres tables.

Reply

Marsh Posté le 04-11-2004 à 15:11:41    

fichiers ?

Reply

Marsh Posté le 04-11-2004 à 15:16:47    

Il y a les fichiers en .DB qui représente le schéma de la table on va dire (malgré le fait qu'ils contiennent aussi du contenu de la tbale) et d'autres fichiers ayant le même nom et dotée d'une extention en .X?? et .Y?? (? pouvant être une lettre ou un chiffre), des fichiers .MB tout ces fichiers étant le contenu de la table et des fichiers .PX qui contiennent des chaînes incompréhensibles :)


Message édité par BenjiiP le 04-11-2004 à 15:23:10
Reply

Marsh Posté le 04-11-2004 à 15:17:34    

Petite erreur, je m'excuse...


Message édité par BenjiiP le 04-11-2004 à 15:18:11
Reply

Marsh Posté le 04-11-2004 à 15:30:24    

Ca m'a l'air bien bordélique :D
 
Je ne pense pas que ça puisse expliquer ton problème, à moins que tu aies un fichier de données corrompu.
 
Tu peux essayer de créer une nouvelle table avec la même scruture (create table nouvelle as select * from lavieille) et remettre dessus les mêmes indexs (si tu en as)
 
Appelle ensuite cette table depuis ton PHP :
-> Si ça plante, alors le problème vient d'ailleurs
-> Si ça plante pas, alors à priori c'est ça le problème
-> Si ça plante lors de la création de la table, alors c'est clairement ça le problème

Reply

Marsh Posté le 04-11-2004 à 15:30:24   

Reply

Marsh Posté le 04-11-2004 à 15:31:23    

BenjiiP a écrit :

Il y a les fichiers en .DB qui représente le schéma de la table on va dire (malgré le fait qu'ils contiennent aussi du contenu de la tbale) et d'autres fichiers ayant le même nom et dotée d'une extention en .X?? et .Y?? (? pouvant être une lettre ou un chiffre), des fichiers .MB tout ces fichiers étant le contenu de la table et des fichiers .PX qui contiennent des chaînes incompréhensibles :)


Je ne suis pas un fichier incompréhensible :o

Reply

Marsh Posté le 04-11-2004 à 15:36:42    

:ange:

Reply

Marsh Posté le 04-11-2004 à 15:37:01    

Arjuna a écrit :

Ca m'a l'air bien bordélique :D


 
Oui à moi aussi comme je débute, je trouve ca pas mal bordelique du tout (je connaissais seulement et pas énormément les bases de données MSAccess et ce n'est pas du tout pareil :)) mais bon c'est comme ça que ca marche, toutes les tables sont dans un même répertoire et le schéma de la base et son contenu sont séparés dans divers fichiers, il n'y a que les fichiers en .PX dont je n'ai pas trouvé l'utilité puisqu'ils sont incompréhensibles  :D

Reply

Marsh Posté le 04-11-2004 à 15:39:09    

MagicBuzz a écrit :

Je ne suis pas un fichier incompréhensible :o


 
Ne t'inquiète pas le contenu des fichiers .MB est tout à fait compréhensible, seul celui des .PX est indescriptible  :lol:

Reply

Marsh Posté le 08-11-2004 à 12:20:32    

Apparement en passant par le BDE et le pilote Paradox natif ca réglerait mon problème mais je ne sais pas du tout comment faire  :??:

Reply

Marsh Posté le 08-11-2004 à 14:34:05    

Je doute que tu puisse résoudre ton problème simplement malheureusement...
 
A mon avis, il faut que tu te fasses une DLL ou CGI en C++, utilisant le drivers natif, qui te permet d'éxécuter une requête et la renvoyer à ton appli. Mais là je te souhaite bon courage, parceque c'est corsé comme truc :/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed