Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143

    [MySQL] Problema con id modificati manualmente

    Salve,

    Spiego brevemente la situazione, semplificando con un esempio. Ho due tabelle "calciatori" e "gol". Nella seconda memorizzo il numero di gol per anno per ciascun calciatore che poi vado ad associare in questo modo:

    SELECT gol_02, gol_03, gol_04 ecc FROM gol WHERE gol_id = '$calciatore_id'";

    Quindi gol_id e calciatore_id sono e devono essere identici. Fin qui nessun problema. A causa di qualche problemino in questi giorni ho fatto alcuni esperimenti e tra una query e l'altra gli id scorrevano, ritrovandomi in questa situazione:

    Tabella calciatori
    calciatore_id | calciatore_nome
    1 | Ambrosini
    2 | Amelia
    3 | Baggio
    4 | esperimento1
    5 | prova
    ecc ecc

    Una volta risolti i problemi ho iniziato nuovamente ad aggiungere i calciatori e non sapendo come fare per far ricominciare a mysql la numerazione degli id da dove avevo lasciato, li ho modificati manualmente... quindi ho aggiunto Baresi e ho modificato l'id assegnato dal db, cioè 6, con 4. Ho fatto la stessa cosa con la tabella "gol".

    Il problema è che adesso non associa gli id... è come se calciatore_id e gol_id fossero diversi tra loro... esiste una sorta di cache di mysql che magari memorizza gli id dei record in qualche cartella?

    Non riesco a capire quale sia il problema

  2. #2
    No, e comunque non capisco il problema anche fosse che gli id della tabella calciatori non abbia tutta la numerazione crescente senza buchi, quale è il problema?

    E' normale che se cambi l'id a Baresi devi cambiarlo anche nelle tabelle relative
    Perchè uso Maxthon? | Mi piace questa chat

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143
    Grazie innanzitutto per avermi risposto

    Lo so che non è un problema se la numerazione degli id non è continua, ma a questo punto vorrei capire.

    Forse però mi sono spiegato male. Ci riprovo:

    Cancellando le righe "spazzatura" (tipo 'prova' ed 'esperimento') quando aggiungo un nuovo giocatore, mysql gli attribuisce ovviamente id 6 e non 4 e fa la stessa cosa con la tabella gol. Se io vado a modificare 6 con 4 in entrambe le tabelle, mi aspetterei che tutto funzionasse e invece è come se mysql non riconoscesse l'uguaglianza tra i due id... e non riesco a capirne il motivo...

  4. #4
    Se i 2 id sono uguali da una parte e dall'altra non è possibile che mysql non li veda uguali.

    L'errore sarà sicuramente umano

    Oltretutto mi sembra di capire che tu abbia dato autoincrement anche alla tabella gol, se così fosse è senz'altro un errore.
    Perchè uso Maxthon? | Mi piace questa chat

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143
    Un errore nel codice php dici? Però con gli altri giocatori funziona tutto una meraviglia... associa le due tabelle senza problemi... boh... i misteri della programmazione....

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Originariamente inviato da neroko
    SELECT gol_02, gol_03, gol_04 ecc FROM gol WHERE gol_id = '$calciatore_id'";

    Quindi gol_id e calciatore_id sono e devono essere identici. Fin qui nessun problema.
    Perche " gol_id = calciatore_id " ????

    __________________________________

    Forse tu usi dei nomi non convenzionali, Ma solitamente
    nella tabella " calciatori " c'è il campo " calciatore_id "
    e nella tabella " gol " ci sono i campi " gol_id " e " id_calciatore_che_ha_fatto_gol "


    poi " calciatore_id = id_calciatore_che_ha_fatto_gol "

    _________________________________________

    Prova a verificare bene questo dettaglio

    ritengo anchio che " L'errore sarà sicuramente umano "


    Saluti

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143
    Si scusate, quello dei calciatori è solo un esempio quindi ho esposto male il problema. In effetti gol_id sarebbe calciatore_gol_id.

    Ripeto, con gli altri record funziona tutto, ma con questo non ne vuole sapere (non ho apportato nessuna modifica al codice PHP)... non è che non sia d'accordo con voi, è che se di mezzo c'è l'errore umano non riesco a capire qual'è visto che non ho alterato nulla a parte gli ids nelle due tabelle.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143
    Chiedo scusa! Problema risolto... e senza di voi non sarei mai riuscito a scovarlo, perchè ero convinto che si trattasse di un qualche mistero mysqliano. Invece il difetto stava nel fatto che tutti i valori della riga incriminata (gol_02, gol_03, gol_04 ecc) sono 0, cioè sto giocatore non ha mai segnato in 10 anni. In php avevo una condizione di tipo $gol == true che ho modificato in isset($gol) e tutto è tornato ok.

    Grazie mille!

    Chiedo un'ultima cosa qui visto che mi sembra abbastanza banale per aprire un altro topic. Se volessi iniziare la numerazione da dove avevo lasciato, potrei fare un backup della tabella e dopo aver eseguito un truncate della stessa importare nuovamente i dati?

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143
    Mi scuso per l'up, ma risolto il primo problema adesso mi sto scervellando per capire come risolvere il secondo già accennato: far ripartire la numerazione dei valori auto increment (gli id) dall'ultimo valore numerico nella tabella. Non che sia strettamente necessario risolvere questo dilemma, però vorrei almeno capire...

    La situazione è la solita... ho una tabella di tipo

    codice:
    id | nome
    1 | qui
    2 | quo
    3 | qua
    4 | prova1
    Dopo aver eliminato la quarta riga con id 4, sto cercando di ricominciare da 4. Cioè, quando aggiungo una nuova riga, vorrei che MySql gli assegnasse 4 invece di 5 come id.

    Ho fatto due prove

    1) Ho eseguito un truncate della tabella, che poi ho ripopolato con il backup fatto in precedenza.

    2) Ho direttamente eliminato la tabella, e l'ho ricreata con il backup fatto in precedenza.

    In entrambi i casi, quando aggiungo nuovi rercord, l'id non è mai 4... tra prove ed esperimenti siamo arrivati a 18

    Come può essere? Dove prende/conserva le informazioni MySQL per ripartire da un certo valore a prescindere dalla cancellazione delle righe o meno?

    Ho controllato il file di backup, ma non c'è nulla che possa in qualche modo "informare" MySQL degli id cancellati...

  10. #10
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119

    stesso problema

    anche io ho lo stesso problema.

    Cancello con phpMyadmin gli ultimi due campi inseriti, per esempio quelli con id 151 e 152,

    poi sempre con phpMyadmin inserisco un campo mettendogli come valore id 151.

    Mi aspetto che il successivo inserimento fatto tramite uno script php inserisca (in automatico, dato che il campo ID e auto increment) come valore ID 152, invece no, il valore che inserisce è 154.

    Come faccio a fare riprendere la numerazione degli autoincrement da dove voglio io?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.