j'ai un pb avec MySQL et php.
je fais des inserts par lecture d'un fichier xml dans une base MySQL.
mes inserts sont de la forme :
INSERT INTO tbl_makers (maker_name maker_appelation maker_address
maker_phone maker_site maker_email) VALUES ('Francois
Vallot','','Vinsorbes','','','')
si je fais un insert "manuellement" c-àd- isolément ca marche sans
erreur
par contre si je les fais tous d'un seul coup, pratiquement tous sont en
erreur.
est-il possible que le pb vienne de la vitesse ** trop rapide ** de
succession des inserts ?
si oui y a t'il un moyen de tester que le serveur mysql est "ready" pour
un autre insert.
seul autre pb que je vois, ce sont les '' qui sont des chaînes vides car
je pense que les inserts qui ne marchent pas correspondent aux cas où il
y a au moins une de ces chaînes vide.
si je fais un insert "manuellement" c-àd- isolément ca marche sans erreur par contre si je les fais tous d'un seul coup, pratiquement tous sont en erreur.
Il faudrait que tu vérifie si mysql_query renvoit une valeur False et si oui quel est le code d'erreur.
est-il possible que le pb vienne de la vitesse ** trop rapide ** de succession des inserts ?
ça me paraît bizarre. De ttes façons, le meilleur moyen est d'importer avec une seule commande : - créer un fichier texte à partir du fichier XML - l'importer dans Mysql par un LOAD DATA INFILE selon la doc, c'est 20 fois plus rapide que des insertions successives.
on peut aussi/en plus verrouiller la table, et avec la v4 suspendre la mise à jour des index :
LOCK TABLES table WRITE ALTER TABLE table DISABLE KEYS ... les INSERTS ou le LOAD DATA INFILE ALTER TABLE table ENABLE KEYS UNLOCK TABLES table
seul autre pb que je vois, ce sont les '' qui sont des chaînes vides car je pense que les inserts qui ne marchent pas correspondent aux cas où il y a au moins une de ces chaînes vide. faut-il remplacer par NULL ou 'NULL' ???
Une chaîne vide n'est *pas* équivalente à la valeur NULL. 'NULL' est un chaîne de 4 caractères.
si je fais un insert "manuellement" c-àd- isolément ca marche sans
erreur
par contre si je les fais tous d'un seul coup, pratiquement tous sont en
erreur.
Il faudrait que tu vérifie si mysql_query renvoit une valeur False et si
oui quel est le code d'erreur.
est-il possible que le pb vienne de la vitesse ** trop rapide ** de
succession des inserts ?
ça me paraît bizarre.
De ttes façons, le meilleur moyen est d'importer avec une seule commande :
- créer un fichier texte à partir du fichier XML
- l'importer dans Mysql par un LOAD DATA INFILE
selon la doc, c'est 20 fois plus rapide que des insertions successives.
on peut aussi/en plus verrouiller la table, et avec la v4 suspendre la mise
à jour des index :
LOCK TABLES table WRITE
ALTER TABLE table DISABLE KEYS
... les INSERTS ou le LOAD DATA INFILE
ALTER TABLE table ENABLE KEYS
UNLOCK TABLES table
seul autre pb que je vois, ce sont les '' qui sont des chaînes vides car
je pense que les inserts qui ne marchent pas correspondent aux cas où il
y a au moins une de ces chaînes vide.
faut-il remplacer par NULL ou 'NULL' ???
Une chaîne vide n'est *pas* équivalente à la valeur NULL. 'NULL' est un
chaîne de 4 caractères.
si je fais un insert "manuellement" c-àd- isolément ca marche sans erreur par contre si je les fais tous d'un seul coup, pratiquement tous sont en erreur.
Il faudrait que tu vérifie si mysql_query renvoit une valeur False et si oui quel est le code d'erreur.
est-il possible que le pb vienne de la vitesse ** trop rapide ** de succession des inserts ?
ça me paraît bizarre. De ttes façons, le meilleur moyen est d'importer avec une seule commande : - créer un fichier texte à partir du fichier XML - l'importer dans Mysql par un LOAD DATA INFILE selon la doc, c'est 20 fois plus rapide que des insertions successives.
on peut aussi/en plus verrouiller la table, et avec la v4 suspendre la mise à jour des index :
LOCK TABLES table WRITE ALTER TABLE table DISABLE KEYS ... les INSERTS ou le LOAD DATA INFILE ALTER TABLE table ENABLE KEYS UNLOCK TABLES table
seul autre pb que je vois, ce sont les '' qui sont des chaînes vides car je pense que les inserts qui ne marchent pas correspondent aux cas où il y a au moins une de ces chaînes vide. faut-il remplacer par NULL ou 'NULL' ???
Une chaîne vide n'est *pas* équivalente à la valeur NULL. 'NULL' est un chaîne de 4 caractères.