Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  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
    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

  6. #6
    puoi postare l'istruzione?

  7. #7

  8. #8
    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

  9. #9
    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

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Perchè la tabella non l'ho fatta io ma il CMS e al momento stò imbastendo una migrazione e necessito che gli id siano gli stessi della tabella di partenza e non creati in automatico da MySQL.

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