Entra su Telegram

Ultimi messaggi

Entra su Telegram

-no title-

Utenti
Statistiche
  • Messaggi totali: 50.526
  • Totale discussioni: 7.254
  • Online Oggi: 67
  • Massimi online: 1.578 (05 Settembre 2016, 16:07:48)
Utenti online
  • Utenti: 0
  • Visitatori: 54
  • Totale: 54

msql database

mi da questo errore

Aperto da alver, 17 Settembre 2007, 10:46:04

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

alver

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

Aronaar

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