Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    32

    [MySQL] Problema con i mediumtext e il vincolo unique

    Ciao a tutti. Vi riporto di seguito la creazione di un attributo e l'errore generato da MySQL...

    testo MEDIUMTEXT NOT NULL UNIQUE

    ERROR 1170: BLOB column 'testo' used in key without a key length

    Provando a cercare in Internet ho letto che dovrei inserire una proprietà KEY, ma sinceramente non ho capito molto. Mi sapreste aiutare per piacere?

    Parlando con un collega e presentandogli questo problema, sono stato definito un folle a voler dichiarare UNIQUE un campo di testo così grande. Il problema è che vorrei evitare che un utente possa inserire due "testi" uguali e credo questo sia l'unico modo per avere questa proprietà. Mi sapreste dire se e perchè è sconsigliato avere attributi del genere UNIQUE? Sorgono problemi di lentezza nell'accesso ai dati?

    Ringraziandovi anticipatamente per l'aiuto, vi saluto.

  2. #2
    ma scusa piuttosto che mettere la chiave unica fai una query al campo che ti interessa

    Tipo l'utente posta tramite un campo di form il testo :

    OGGI è una bella giornata

    tu fai una query del tipo :

    select id from tabella where campo like 'OGGI è una bella giornata'

    se ti restituisce 1 gli fai stampare frase gia inserita se restituisce 0 gli fai l'insert

  3. #3

    Re: [MySQL] Problema con i mediumtext e il vincolo unique

    Originariamente inviato da lboratto
    testo MEDIUMTEXT NOT NULL UNIQUE

    ERROR 1170: BLOB column 'testo' used in key without a key length

    Provando a cercare in Internet ho letto che dovrei inserire una proprietà KEY, ma sinceramente non ho capito molto. Mi sapreste aiutare per piacere?
    Devi dichiarare su quanti byte vuoi la chiave UNIQUE. Come ti hanno detto sarebbe assurdo messa sull'intero campo. Va bene come suggerito da Stefano. Per rispondere alla tua domanda:

    ALTER TABLE tabella ADD UNIQUE (campo(15))

    dove 15 sono i byte su cui fare l'indice UNIQUE. In caso di doppione ti renderebbe un errore e questo e' inaccettabile. dovresti fare sempre una query preventiva se inserisci da script. E quindi tanto vale...

    Il campo UNIQUE potrebbe servire per pararti da doppi inserimenti in caso di travaso di dati (LOAD DATA INFILE, backup, inserim. manuali) ma non per la normale gestione tramite script.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.