Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: Problema Query

  1. #1

    Problema Query

    Salve, ho un blog con più di un milione di utenti e non riescono più a registrarsi perché da questo errore:
    Duplicate entry '0' for key 'PRIMARY'

    La tabella prima era in un altro formato e il database lo gestiva il tecnico, poi l'ho licenziato e adesso non so dove mettere mano.

    Navigando su internet ho scoperto che bisogna aggiungere AUTO_INCREMENT ma il problema è che la tabella ha un peso di 1,5 gb e non riesco a modificare il valore. Uso Phpmyadmin e dopo circa 10 minuti da l'errore 500 Internal Error e il valore non si modifica.

    C'è una soluzione per inviare una query senza auto_increment?

  2. #2
    L'auto increment dovrebbe aumentare da se ogni volta che inserisci un nuovo record.

  3. #3
    Si ma il valore ID non contiene AUTO_INCREMENT e non riesco ad aggiungerlo perché la tabella pesa 1,5 gb

    Ad ogni utente che si registra nel blog viene dato un id in automatico ma non essendoci auto_increment l'id rimane sempre 0 ad ogni query
    Ultima modifica di Alfredo226; 06-09-2014 a 10:53

  4. #4
    non c'è da aggiungere, vedo che usi phpmyadmin.

    entra nel database, e poi nella tabella, selezioni il campo a cui vuoi assegnare auto-increment, clicchi CHANGE

    nella colonna EXTRA selezioni auto_increment. e salvi.

  5. #5
    Adesso sto provando a fare una cosa simile:

    $query = mysql_query("SELECT id FROM bb_utenti");
    $numeroutenti = mysql_num_rows($query);

    mysql_query("INSERT INTO bb_utenti (id, ecc... ecc..) VALUES ('".
    ($numeroutenti +1)."'
    e funziona una volta sola e la query si invia dopo 1 minuto, quindi gli utenti dovranno aspettare 1 minuto di caricamento...
    Ultima modifica di Alfredo226; 06-09-2014 a 11:07

  6. #6
    Quote Originariamente inviata da tizyjayd Visualizza il messaggio
    non c'è da aggiungere, vedo che usi phpmyadmin.

    entra nel database, e poi nella tabella, selezioni il campo a cui vuoi assegnare auto-increment, clicchi CHANGE

    nella colonna EXTRA selezioni auto_increment. e salvi.
    Ripeto, non riesco a salvare perché la tabella pesa 1,5 gb e non si salva carica all'infinito e dopo un po' dice Internal Server Error

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    puoi usare altri strumenti invece di phpmyadmin? tipo MySQL Workbench?
    altrimenti potresti fare una cosa di questo tipo
    - prima di inserire il nuovo utente, fai una query che ti restituisca il valore massimo dell'id
    - recuperi il dato e tramite PHP lo incrementi di uno
    - usi il nuovo dato nella insert e lo inserisci nell'id

    credo che dovresti anche apporre il lock sulla tabella appena fai la select per recuperare il massimo valore di id, per evitare che a causa di iscrizioni contemporanee si verifichino errori di valore duplicato

    Comunque, modificare il campo è sicuramente la cosa migliore da fare, prova con strumenti diversi da phpmyadmin

  8. #8
    Quote Originariamente inviata da clasku Visualizza il messaggio
    - prima di inserire il nuovo utente, fai una query che ti restituisca il valore massimo dell'id
    - recuperi il dato e tramite PHP lo incrementi di uno
    - usi il nuovo dato nella insert e lo inserisci nell'id
    Come faccio? Comunque grazie dei consigli.

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Codice PHP:
    $query mysql_query("SELECT max(id) as max_id FROM bb_utenti");
    $risultato mysql_fetch_array($query);

    $nuovo_id $risultato['max_id'];

    mysql_query("INSERT INTO bb_utenti (id, ecc... ecc..) VALUES ($nuovo_id, ecc... ecc...); 
    cerca di trovare una soluzione per modificare il campo della tabella, che è meglio... anche perché quanto sopra dovresti farlo sempre... e non è bello

  10. #10
    Come cancello questo posts?
    Ultima modifica di Alfredo226; 06-09-2014 a 13:24 Motivo: Leggi 2° pagina

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.