[MySQL] Foreign key errore

MrSab

Nuovo Utente
8 Ago 2019
4
0
1
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:

MrSab

Nuovo Utente
8 Ago 2019
4
0
1
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"
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.
 

Allegati

marino51

Utente Attivo
28 Feb 2013
2.682
135
63
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
 

marino51

Utente Attivo
28 Feb 2013
2.682
135
63
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)
);