Autore Topic: msql database  (Letto 711 volte)

Description: mi da questo errore

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline alver

  • Moneywanter Baby
  • *
  • Post: 10
  • Punteggio feedback: 0
msql database
« il: 17 Settembre 2007, 10:46:04 »
ciao a tutti sto creando un database msql e ho questo problemino...:(premetto che e' il mio primo database)Praticamente mi da questo errore:

  CREATE TABLE `banner_imp` (
`banner_id` INT( 4 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`count` INT( 5 ) UNSIGNED NULL DEFAULT '0',
`click_date` DATE NOT NULL DEFAULT '0000-00-00',
`banner_id,click_date` VARCHAR( 10 ) NULL ,
PRIMARY KEY ( `banner_id,click_date` )
) TYPE = MYISAM

Messaggio di MySQL: Documentazione
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key


il mio risultato giusto in base allo script pronto che ho dovrebbe essere questo:

CREATE TABLE banner_imp (
  banner_id int(4) unsigned NOT NULL auto_increment,
  count int(5) unsigned default '0',
  click_date date NOT NULL default '0000-00-00',
  PRIMARY KEY  (banner_id,click_date)
) ENGINE=MyISAM;

Se potete darmi una dritta ve ne sare molto grato,altrimenti..:strippo!!!ciao grazie

Offline Aronaar

  • Moneywanter
  • ***
  • Post: 149
  • Punteggio feedback: 2
    • Become a trader
Re: msql database
« Risposta #1 il: 17 Settembre 2007, 20:53:13 »
Prendendo in considerazione il codice sql che hai scritto:
CREATE TABLE `banner_imp` (
`banner_id` INT( 4 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`count` INT( 5 ) UNSIGNED NULL DEFAULT '0',
`click_date` DATE NOT NULL DEFAULT '0000-00-00',
`banner_id,click_date` VARCHAR( 10 ) NULL ,
PRIMARY KEY ( `banner_id,click_date` )
) TYPE = MYISAM

noto il campo
`banner_id,click_date` VARCHAR( 10 ) NULL ,
con il quale mi pare tu voglia creare un campo da usare poi nella primary key. Questo campo non ha senso in quanto possiedi giÓ i campi banner_id e click_date e quindi la primary key potrebbe giÓ essere applicata senza il campo in questione.
Dico potrebbe perchŔ stai utilizzando il campo banner_id come autoincrementante. Questa Ŕ una proprietÓ esclusiva delle chiavi (come ti dice espressamente l'errore che ti viene segnalato) e ti obbliga a definire la chiave primaria su quel campo e solo su di esso. D'altra parte banner_id sarÓ sempre diverso per tutti i record che andrai ad inserire e quindi una chiave composta su banner_id e click_date risulta ridondante e poco efficiente.
L'istruzione sql dovrebbe essere modificata come segue:
CREATE TABLE `banner_imp` (
`banner_id` INT( 4 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`count` INT( 5 ) UNSIGNED NULL DEFAULT '0',
`click_date` DATE NOT NULL DEFAULT '0000-00-00',
PRIMARY KEY ( `banner_id` )
) TYPE = MYISAM;

Ti faccio notare anche il simbolo ';' al termine dell'istruzione sql

MoneyWantersForum

Re: msql database
« Risposta #1 il: 17 Settembre 2007, 20:53:13 »
MisterDomain.EU