Il db si rifiuta di inserire un record | Amministrazione, Gestione, Backup

Topic: Pubblico - Composto da 11 Posts di 2 Utenti.

17 Luglio, 2010 06:27 #1
giannidef
Utente

giannidef
Registrato: Jul, 2010
Posts: 8
Offline

Salve a tutti e vi ringrazio anticipatamente per la collaborazione.

Il mio quesito (o meglio 2) è questo. Ho realizzato un database con mysql con un unica tabella con 3 campi, ISBN (text(15), collocation (utf8_general_ci), NULL = si, TITOLO (longtext), collocation (utf8_general_ci), NULL = si,AUTORE (longtext), collocation (utf8_general_ci), NULL = si. Nei campi TITOLO e AUTORE non saranno mai (ho verificato) inseriti valori con più di 40 caratteri. Tramite un programmino in visual basic 6 devo migrare i record da 152 tabelle di access. Qual'è il problema? mi si blocca sempre sullo stesso record che apparentemente non sembra incompatibile con la struttora del data base:

IDCampo5Campo6Campo7
3724 9788808266286 Idee_per_diventare_veterinario_Prevenire_l%27influenza_aviaria_e_altre_malattie_degli_animali Capua_Ilaria.html

l'inserimento avviene dopo aver eliminato dalle stringhe caratteri come _, %27, %26, .html ecc. Il blocco si verifica indipendentemente dalla posizione nella tabella da migrare. Un altra cosa strana, l'inserimento non avviene con lo stesso ordine dei record della tabella da migrare anche se la query di select è molto semplice: "select distinct campo5, campo6, campo7 FROM " & n

I record inseriti sono circa una ventina.

Il secondo questito è invece questo: per un errore nel listato del programma di visual basic, veniva inserito sempre lo stesso record, ma sui 16000 record il db andava in tilt. Il database conterrà molti più record, quindi è un problema che si presenterà non appena avrò risolto il primo quesito. Grazie per l'aiuto sperando di essere stato chiaro.

17 Luglio, 2010 15:48 #2
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 867
Offline
Segui g2d su Twitter!

Ciao giannidef,

Benvenuto su MySQL Italia, ho spostato il topic in una sezione più adatta

 

Le migrazioni non sono mai semplici, riservano sempre qualche insidia.

 

Riguardo al primo quesito:

 

Ricevi qualche messaggio di errore ? il record precedente e/o il successivo come sono?

 

l'applicazione VB6 di cosa di occupa?

 

Per il secondo quesito stai tranquillo perche 16000 record  non sono moltissimi, MySQL sicuramente ti sorprenderà

 

Facci sapere 

 

Saluti algweb

 

Ultima modifica 17 Luglio, 2010 15:49 di g2d


Un tempo ero algweb ora sono g2d

17 Luglio, 2010 22:12 #3
giannidef
Utente

giannidef
Registrato: Jul, 2010
Posts: 8
Offline

Ciao Algweb,

il capo precedente è:

IDCampo5Campo6Campo7
3084 9788808244529 Fondamenti_di_fisica James_S_Walker.html

 che inserisce regolarmente, mentre quello successivo è:

IDCampo5Campo6Campo7
3662 9788809006546 Agricoltura%2C_energia%2C_sviluppo Gigliotti_Andrea.html

 questo lo riesco a capire perchè facendo il debug della mia applicazione vb6, i valori assegnati alle variabili sono proprio quelli del record che ti ho descritto nel post precedente. Riguardo alla posizione del record nella tabella da migrare ho capito che la mia query di SELECT DISTINCT me li ordina secondo il valore del campo 5 (ma questo non è un problema)

L'errore che mi da l'applicazione vb6 è: uno o più errori durante l'esecuzione del comando.

il comando a cui si riferisce è:' conn.Execute query' che esegue la query di inserimento del record ne db di mysql.

La mia piccola applicazione non fa altro che connettersi al db access e leggere le 152 tabelle che io ho nominato semplicemnte con un numero (da 1 a 152) in modo da facilitarne la lettura in sequenza mediante un ciclo di for; man mano che legge ogni singolo record lo inserisce nella tabella del db di mysql. Tutto funziona bene fin quando non arriva al record suddetto.        Di nuovo grazie, Gianni

19 Luglio, 2010 07:06 #4
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 867
Offline
Segui g2d su Twitter!

Ciao giannidef,

 

scusami se rispondo solo ora, ma ho riletto il topic con lucidità... ed è tutto più chiaro.

 

Mi fai vedere un attimo la INSERT che il tuo programma VB6 utilizza per aggiungere i record (con i caratteri speciali &, .) nella tabella MySQL ?

 

Il Campo6 è definito come text ?

 

Grazie

 

Saluti algweb

 

 


Un tempo ero algweb ora sono g2d

19 Luglio, 2010 09:26 #5
giannidef
Utente

giannidef
Registrato: Jul, 2010
Posts: 8
Offline

in effetti il problema sta proprio nei caratteri speciali, infatti non ho più sostituito i caratteri codificati con quelli speciali con il metodo replace, es:

autore = replace(autore, "%27", "'") ma inserisco i record così come sono

IDCampo5Campo6Campo7
13 9788842543459 L%27uomo_e_il_cane%3A_storia_di_una_antica_alleanza Meneghetti_Vittorino.html
 

 magari li gestisco in un secondo momento.

il programma li inserisce regolarmente ma fino al recordo 16351, a volte 16350 (e siamo solo ad una parte della tabella 11) ma sempre intorno a quel numero e senza apportare alcuna modifica ai record di access. I campi campo5, campo6 e campo7 in access sono definiti come text mentre in mysql campo5 è definito come text e campo6 e campo7 come lonqtext

questa è la query di inserimento in mysql

query = "INSERT INTO libri ( isbn, titolo, autore) VALUES ( '" & isbn & "', '" & titolo & "', '" & autore & "')"

Ripeto, non sempre si blocca nello stesso punto ma varia di uno, due record e poi mysql va in tilt e a volte non riesco a leggere e record inseriti ma devo chiudere il pannello di gestione di mysql e riavviarlo.

 questo è il record dove, mentre scrivo, si blocca:

IDCampo5Campo6Campo7
2304 9788854827554 La_prevensione_incendi_nell%27architettura_Tecnica_e_tecnologia Fascia_Flavia.html

io, onestamente, non riesco a trovare nulla di strano rispetto agli altri record inseriti

 

Ultima modifica 19 Luglio, 2010 09:42 di giannidef

19 Luglio, 2010 10:00 #6
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 867
Offline
Segui g2d su Twitter!

Ciao giannidef,

 

se il programma VB6 è tuo .... puoi intervenire cercando di fare le insert a blocchi, tipo 1000 alla volta ?

 

puoi controllare i log di mysql e della macchina ? ....

 

se va in tilt il servizio MySQL è grave come cosa e non penso dipenda dai caratteri, magari qualche problema di buffer

 

E' un problema interessante

 

Saluti user:algweb


Un tempo ero algweb ora sono g2d

19 Luglio, 2010 10:44 #7
giannidef
Utente

giannidef
Registrato: Jul, 2010
Posts: 8
Offline

Ok, proverò ad inserire i record a blocchi di 1000 poi ti faccio sapere. Grazie per l'aiuto!

19 Luglio, 2010 12:29 #8
giannidef
Utente

giannidef
Registrato: Jul, 2010
Posts: 8
Offline

Sto facendo un lavoraccio!!!

L'errore che mi da mysql quando si blocca è questo:
Connessione per controluser come definito nella configurazione fallita

potrebbe anche dipendere da vb6. L'installazione è stata forzata su Windows Seven Ultimate

Ultima modifica 19 Luglio, 2010 12:30 di giannidef

19 Luglio, 2010 13:11 #9
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 867
Offline
Segui g2d su Twitter!

ci credo!

 

quest'errore lo ricevi in seguito a cosa ?

hai spacchettato il tutto in gruppi da 1000 insert?

 

una curiosità, ma se provassi a farti scrivere dei csv e poi li importi con mysql  ?

 

Che ne pensi ?

 

magari è un modo per uscirne velocemente

 

saluti algweb

 

 


Un tempo ero algweb ora sono g2d

19 Luglio, 2010 14:37 #10
giannidef
Utente

giannidef
Registrato: Jul, 2010
Posts: 8
Offline

Ho provato con un csv ed ecco il risultato

Importazione eseguita con successo, 361237 query eseguite.

Il problema deve essere vb6

grazie ALGWEB!!

Condividi su:

Loggati o Registrati per replicare