[MySQL] Foreign key errore

Discussione in 'MySQL' iniziata da MrSab, 8 Agosto 2019.

Tag (etichette):
  1. MrSab

    MrSab Nuovo Utente

    Registrato:
    8 Agosto 2019
    Messaggi:
    4
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Codice:
    mysql> show columns from card_type;
    +-----------+-------------+------+-----+---------+----------------+
    | Field     | Type        | Null | Key | Default | Extra          |
    +-----------+-------------+------+-----+---------+----------------+
    | card_id   | smallint(5) | NO   | PRI | NULL    | auto_increment |
    | name_card | char(128)   | NO   |     | NULL    |                |
    | meaning   | char(128)   | NO   |     | NULL    |                |
    +-----------+-------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)
    
    mysql> create table acquisti (purchase_id smallint(5) not null auto_increment,nome_off char(128) not null,acquistata char(128) not null,attivabile_dal char(128) not null,card_assegnata smallint(5),primary key (purchase_id),foreign key(card_assegnata) references card_type(card_id);
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    mysql> create table acquisti (purchase_id smallint(5) not null auto_increment,nome_off char(128) not null,acquistata char(128) not null,attivabile_dal char(128) not null,card_assegnata smallint(5),primary key (purchase_id),foreign key(card_assegnata) references card_type(card_id);
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    mysql> alter table card_type add primary key ('card_id',name_card');

    Ciao a tutti

    sto cercando di impratichirmi con il linguaggio Mysql (per cambiare lavoro) e sto cercando di creare una tabella collegata alla prima tramite una foreign key ma il sistema mi da sempre errore, cosa sto sbagliando?
    Abbiate pazienza anche se probabilmente è tanto evidente che dovrei capirlo da solo....

    Grazie

    P.s. se creo la tabella senza inserire foreign key non mi da errore.....
     
    Ultima modifica: 8 Agosto 2019
  2. MrSab

    MrSab Nuovo Utente

    Registrato:
    8 Agosto 2019
    Messaggi:
    4
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Nessuna idea?

    Grazie
     
    Ultima modifica: 9 Agosto 2019
  3. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.518
    Mi Piace Ricevuti:
    123
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    si, potresti leggere il manuale e così scoprire che,
    "char" é una funzione che nulla ha a che vedere con la definizione delle stringhe nella "create"
     
  4. MrSab

    MrSab Nuovo Utente

    Registrato:
    8 Agosto 2019
    Messaggi:
    4
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ciao, grazie di aver accolto la mia richiesta.
    Sto seguendo un manuale che ti allego in foto con l'istruzione che mi da. Ho semplicemente cambiato i dati con quelli da me creati ma la struttura mi pare la stessa.
    Puoi essere piu' chiaro con l'incompatibilità della funzione "char"? Come dovrei scrivere allora? Nell'istruzione riportata nel manuale cosa non sto notando?

    E infine il manuale a cui fai riferimento quale sarebbe?

    Faccio riferimento alla tua pazienza nel volermi far capire.
     

    Files Allegati:

  5. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.518
    Mi Piace Ricevuti:
    123
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    quando tratti un qualsiasi motore sql e/o un qualsiasi linguaggio di programmazione,
    fai sempre riferimento allo specifico manuale,
    ciò che stai leggendo può essere una traccia, non necessariamente la copia del manuale specifico

    come detto "char" in mysql é una funzione che non si adatta alla "create", così indica il manuale specifico
     
  6. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.518
    Mi Piace Ricevuti:
    123
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    scusa, sto usando una versione molto vecchia di mysql che lavora con Win IIS
    provando il tuo script su un'altra macchina vedo che l'errore deriva da una parentesi mancante prima del punto e virgola finale
    prova così,
    Codice:
    create table acquisti (
     purchase_id smallint(5) not null auto_increment
    ,nome_off char(128) not null
    ,acquistata char(128) not null
    ,attivabile_dal char(128) not null
    ,card_assegnata smallint(5)
    ,primary key (purchase_id)
    ,foreign key(card_assegnata) references card_type(card_id)
    );
     
Sto caricando...

Condividi questa Pagina