Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di giennekappa
    Registrato dal
    Oct 2010
    Messaggi
    54

    MySQL -> Problema con la creazione di una tabella

    $query="
    CREATE TABLE `$database`. `$tabella` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE ,
    `utente` VARCHAR( 60 ) NOT NULL ,
    `citta` TEXT( 10000 ) NOT NULL UNIQUE,
    `info` VARCHAR ( 60 ) NOT NULL,
    PRIMARY KEY ( `id` , `citta` )
    );
    ";







    ERRORE:
    BLOB/TEXT column 'citta' used in key specification without a key length

    Come posso fare per risolverlo?
    Io voglio far sì che non solo i nomi utenti, ma anche le città siano valori unici
    I make the game and you play.

  2. #2
    text e' un campo di dimensione prefissata e non vuole il valore (10000)

    comunque 10000 caratteri per la citta' sarebbe un valore un po' troppo ottimistico.

    usa un varchar 100 e gia lo faresti sorridere....

    poi ci sono anche altre cosette in quel create table

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

  3. #3
    Utente di HTML.it L'avatar di giennekappa
    Registrato dal
    Oct 2010
    Messaggi
    54
    L'ho messo solo perché mi dava errore se non lo mettevo.
    Questo per dire cosa?

    Mi da comunque lo stesso errore con o senza:
    BLOB/TEXT column 'citta' used in key specification without a key length
    I make the game and you play.

  4. #4
    Utente di HTML.it L'avatar di giennekappa
    Registrato dal
    Oct 2010
    Messaggi
    54
    AIUTOOOOOOOOOO!

    $query="
    CREATE TABLE `$database`. `$tabella` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE ,
    `utente` VARCHAR( 60 ) NOT NULL ,
    `citta` TEXT( 10000 ) NOT NULL UNIQUE,
    `info` VARCHAR ( 60 ) NOT NULL,
    PRIMARY KEY ( `id` , `citta` )
    );
    ";

    Il codice qui sopra funziona, ma DEVO scrivere VARCHAR ( 1000 ) al posto di TEXT.
    Funziona, ma io voglio più di 1000 caratteri, quindi mi serve un TEXT.
    PERCHÈ non posso inserirlo?
    I make the game and you play.

  5. #5
    10000 caratteri per UNA città?

  6. #6
    Originariamente inviato da giennekappa
    AIUTOOOOOOOOOO!

    $query="
    CREATE TABLE `$database`. `$tabella` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE ,
    `utente` VARCHAR( 60 ) NOT NULL ,
    `citta` TEXT( 10000 ) NOT NULL UNIQUE,
    `info` VARCHAR ( 60 ) NOT NULL,
    PRIMARY KEY ( `id` , `citta` )
    );
    ";

    Il codice qui sopra funziona, ma DEVO scrivere VARCHAR ( 1000 ) al posto di TEXT.
    Funziona, ma io voglio più di 1000 caratteri, quindi mi serve un TEXT.
    PERCHÈ non posso inserirlo?
    ma come fai a dire che funziona se ti da errore? Quindi prendiamolo come assunto che questa query NON funziona.

    text non vuole la lunghezza del campo. La chiave UNIQUE su un campo text vuole la quantita' di caratteri che debbono essere UNICI. Non puo' fare un indice su 65535 caratteri....

    http://dev.mysql.com/doc/refman/5.0/en/blob.html

    Primary key e' di suo unica e ribattere due unique per fare una chiave primaria ....

    Vedi tu...

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

  7. #7
    Utente di HTML.it L'avatar di giennekappa
    Registrato dal
    Oct 2010
    Messaggi
    54
    Ok, sulle primary key ti do ragione, ma non funziona lo stesso.
    Mi da sempre lo stesso errore.
    Vuole una lunghezza per TEXT ed io non gliela posso dare.


    $query="
    CREATE TABLE IF NOT EXISTS `$data`. `$tabellina` (
    `codice` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE,
    `poco_importante` VARCHAR( 60 ) NOT NULL ,
    `importantissimo` TEXT NOT NULL UNIQUE,
    );
    ";


    Questo mi segna UN MEGA ERRORACCIO ed io non so più dove sbattere la testa.
    HELP
    I make the game and you play.

  8. #8
    1. ancora, perché dedicare un campo TEXT alla città?
    2. MEGA ERRORACCIO non non vuol dire niente, posta l'errore esatto

  9. #9
    Originariamente inviato da giennekappa
    Questo mi segna UN MEGA ERRORACCIO ed io non so più dove sbattere la testa.


    Scusa eh! ma dimmi COSA non hai capito del mio precedente post che quoto qui per maggior comodita':

    text non vuole la lunghezza del campo. La chiave UNIQUE su un campo text vuole la quantita' di caratteri che debbono essere UNICI. Non puo' fare un indice su 65535 caratteri....
    Mettiamolo giu' chiaramente quello che intendo dire:

    codice:
    CREATE TABLE `$data`. `$tabellina` (
     `codice` int(10) unsigned NOT NULL AUTO_INCREMENT,
     `poco_importante` varchar(60) NOT NULL,
     `importantissimo` text NOT NULL,
     PRIMARY KEY `codice` (`codice`),
     UNIQUE KEY `importantissimo` (`importantissimo`(100))
    )
    chiave unica sui primi 100 caratteri.... puoi arrivare fino a 1000 se MyIsam, di meno se innoDB

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

  10. #10
    Utente di HTML.it L'avatar di giennekappa
    Registrato dal
    Oct 2010
    Messaggi
    54
    No, non era una città, era un esempio.
    Comunque adesso mi è chiaro. Grazie piero.
    Posso usare il text e settare la chiave unique solo su una parte!
    PERFETTO, io non lo sapevo.
    ANCORA NON L'HO PROVATO PER TESTARE SE FUNZIONA MA MI FIDO, SEMBRI FORTE!
    GRAZIE ANCORA, hai salvato una vita. Se non avessi trovato una soluzione mi sarei suicidato!!



    Ti posso chiedere soltanto di spiegarmi precisamente cosa c'è scritto su questa riga?
    UNIQUE KEY `importantissimo` (`importantissimo`(100))

    Unique key è come scrivere unique o sono due condizioni separate?
    Il numero 100 si riferisce a key oppure a unique?
    La parte tra parentesi è riferita solo a key oppure anche a key unique?
    Perché riscrivi `importantissimo`(100) tra parentesi?

    Ah, ed un ultima cosa. Si può non questa riga come condizione finale, ma metterlo di fianco a TEXT?
    Scusa le 1000000 domande, ma io con MySQL ho inziato adesso.

    Cmq ho deciso, ti metto come amico, così quando avrò dubbi saprò a chi rivolgermi
    I make the game and you play.

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.