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

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617

    Reinserire un id in un campo primario autoincrement

    Salve a tutti,
    nel tentativo di fare una migrazione ho necessit� di portarmi degli id da una tabella all'altra.

    Di base cancello tutto quello che c'� nella tabella di destinazione ("delete from ......") e poi ricopio ci� che prendo nella tabella sorgente, facendo attenzione ad inserire l'id autoincrement della prima tabella nella seconda in un campo praticamente uguale.

    Questa operazione viene ripetuta pi� vote.
    Ho notato per� che sebbene tutto proceda mi viene comunque restituito un errore come questo : Duplicate entry '10' for key 'PRIMARY'

    Credo significhi che c'� un duplicato per quel che riguarda la chiave primaria ( ma li ho cancellati prima.... ), come posso ovviare?

    Ripetendomi, lo script funziona sempre e di fatto cancella e reinserisce questi record ma mi restituisce questo errore che non so quanto mi piaccia.

    Immagino che mysql guardi l'indice e per questo restituisce questo "Avviso", possibile resettare l'indice o fare altro per evitare che mi venga restituito questo errore?

    Grazie in anticipo

  2. #2
    come fai ad assegnare un valore definito a una colonna autoincrementante?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Definisco il valore nell' value dell' insert come qualunque altro valore e comunque sono sicuro che non esiste altro valore uguale perchè prima svuoto la tabella

  4. #4
    no, forse non ho posto bene la domanda. se io definisco autoincrement una colonna, io quella colonna proprio NON la posso inserire, perché la gestisce il sistema... mi piacerebbe capire come fai

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Quote Originariamente inviata da optime Visualizza il messaggio
    no, forse non ho posto bene la domanda. se io definisco autoincrement una colonna, io quella colonna proprio NON la posso inserire, perché la gestisce il sistema... mi piacerebbe capire come fai
    E' semplicissimo, basta mettere il valore nell'istruzione sql di inserimento.
    Visto che hai postato un link al manuale di mysql, potresti anche prenderti la briga di leggerlo

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Nel caso abbia dimenticato qualche particolare ti allego lo screenshot di phpmyadmin con le specifiche.

    Cmq come ti ho detto inserisco l'id_category (che è auto increment) con un semplice insert into.... in php.

    Cmq se hai idee su come risolvere.....

    Grazie in anticipo

    Schermata-2017-04-19-alle-00.03.11.jpg

  7. #7

  8. #8
    puoi postare l'istruzione?

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    L'istruzione è questa:

    codice:
    $sql_insert
    codice:
    = "INSERT INTO " . _DB_PREFIX_ . "category (id_category,id_parent,id_shop_default, active,date_add,date_upd, position)";
    $sql_insert.= " VALUES (:id, :id_parent, :id_shop_default, :active, :date_add, :date_upd, :position)";$shop= 1;
    if($row['parent_id'] == 0 ){
        $parent_id = 2;
    }else{
        $parent_id = $row['parent_id'];
    }
    
    $date = date("Y-m-d H:i:s");
    $stmt = $db_ps->prepare($sql_insert);
    $stmt->bindParam(':id', $row['categories_id']);
    $stmt->bindParam(':id_parent', $parent_id);
    $stmt->bindParam(':id_shop_default', $shop);
    $stmt->bindParam(':active', $row['categories_status']);
    $stmt->bindParam(':date_add', $date);
    $stmt->bindParam(':date_upd', $date);
    $stmt->bindParam(':position', $row['sort_order']);
    


    Così i record vengono inseriti ma restituisce comunque quell'avviso di cui ti parlavo prima

  10. #10
    continuo a non capire la logica: se tu definisci una colonna come autoincrementante (cioè: si gestisce da sola!) perché dire tu quale valore deve assumere? le opzioni per me sono solo due:
    1. decide MySQL --> NON inserisco il valore
    2. decido io --> NON dichiaro la colonna come AutoIncrementante

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 © 2026 vBulletin Solutions, Inc. All rights reserved.