2010-03-19 12 views
11

Sto utilizzando phpmyadmin (php & mysql) e sto riscontrando un sacco di problemi nel collegare le tabelle utilizzando chiavi esterne.phpMyAdmin valori del campo a discesa chiave esterna

Ottengo valori negativi per il campo countyId (che è la chiave esterna). Tuttavia è collegato al mio altro tavolo e va bene a cascata.

Quando vado per aggiungere dati ci sarà una casella di riepilogo per la CountyId ei valori simile a questa,

-1 

1- 

Ecco la mia dichiarazione alter:

ALTER TABLE Baronies 
ADD FOREIGN KEY (CountyId) 
REFERENCES Counties (CountyId) 
ON DELETE CASCADE 
+1

In qualche modo io non so se questo è programmazione relativa o meno. La tua dichiarazione SQL sembra a posto. Non ho informazioni su phpmyadmin e, a questo proposito, la tua domanda si legge più come "come usare l'applicazione phpmyadmin". –

+0

Goto SuperUser? – p4bl0

+4

Questo non ha nulla a che fare con la query, o la chiave stessa. La casella a discesa per la selezione dei valori non ha un'entrata negativa, in questo caso, indipendentemente da quale scegli, inserirai il valore '1'. Perché pMA lo rappresenta in questo modo; Non lo so ... –

risposta

-1

Verificare se il vostro le tabelle utilizzano il motore MyIsam. In quel caso le chiavi esterne non sono supportate. Utilizza invece InnoDB.

+0

Sì, entrambe le tabelle utilizzano il motore InnoDB. –

+0

phpmyadmin utilizza MyIsame di default c'è comunque per cambiare questo? Ho provato a guardare ma non ho trovato nulla. Perché ho appena cambiato i tavoli in InnoDB .... potrebbe essere questo il problema? –

+0

Il valore predefinito in mySql è myISAM, questa non è un'opzione phpmyadmin. Controllare la documentazione MySql sui motori DB su: http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html – munissor

6

È possibile modificare l'aspetto di questo menu a discesa utilizzando l'opzione ForeignKeyDropdownOrder. (Vedi lo PMA documentation).

Esempio:

$cfg['ForeignKeyDropdownOrder'] = array('content-id'); 
/* 'content' is the referenced data, 'id' is the key value. */ 
3

Come detto Lex, questo è solo il modo phpMyAdmin visualizza i valori. Se vedi "-1" o "1-" in quella casella a discesa, è solo 1.

9

come ho spiegato in ServerFault:

Non è il numero negaitve, la caratteristica di PhpMyAdmin è quello di mostrare chiave esterna valore e un campo di descrizione personalizzato accanto ad esso. Nella tabella di riferimento (Contee) puoi andare in "Vista relazione" e sotto la tabella c'è una casella di selezione "Scegli campo da visualizzare", in cui scegli il valore che verrà visualizzato accanto al valore IDCorso nella tabella di riferimento (Baronie). Vedi anche: phpymadminWiki

-1

passare nel modo di cambiamento myiasm a InnoDB di Go

+0

Non riesco a dare un senso a tutto questo, ma non sembra avere molto a che fare con le chiavi esterne. Forse qualche altro dettaglio sarebbe utile. –

Problemi correlati