Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Aiuto problema mysql errno 105

    Salve a tutti... sto impazzendo...
    sto creando un db mysql per un'applicazione symfony.
    Dopo la creazione dei file yml, propel mi genera un file sql da importare in mysql... ma una tabella mi da problemi, e non capisco il perchè... eccola di seguito e l'errore che ne viene fuori

    CREATE TABLE `ana_agenzie`
    (
    `ag_id` INTEGER(11) NOT NULL AUTO_INCREMENT,
    `ut_id` INTEGER(11) NOT NULL,
    `ag_nome` VARCHAR(128) NOT NULL,
    `ag_flag_del` INTEGER(11),
    `created_at` DATETIME,
    `updated_at` DATETIME,
    PRIMARY KEY (`ag_id`),
    INDEX `ana_agenzie_FI_1` (`ut_id`),
    CONSTRAINT `ana_agenzie_FK_1`
    FOREIGN KEY (`ut_id`)
    REFERENCES `sys_utenti` (`ut_id`)
    ON UPDATE RESTRICT
    ON DELETE SET NULL
    )Type=InnoDB;

    l'errore è:
    #1005 - Can't create table '.\test\ana_agenzie.frm' (errno: 150)

    Ovviamente prima di questa ho creato la tabella sys_utenti a cui la foreign key fa riferimento... ed eccola qui sotto

    CREATE TABLE `sys_utenti`
    (
    `ut_id` INTEGER(11) NOT NULL AUTO_INCREMENT,
    `ut_mail` VARCHAR(128) default 'null',
    `ut_password` VARCHAR(128) default 'null',
    `ut_flag_nl` INTEGER(11),
    `ut_flag_del` INTEGER(11),
    `created_at` DATETIME,
    `updated_at` DATETIME,
    PRIMARY KEY (`ut_id`)
    )Type=InnoDB;

    Ovviamente mi sono documentato, l'errore riguarda la creazione della foreign key, ma ho controllato e ricontrollato, i nomi sono gli stessi, i tipi pure, è un'indice... boh

    Sto impazzendo... aiutatemi!!!!

  2. #2
    al volo noto che usi un id (ud_id) auto increment come chiave primaria. Questo non puo' essere mai settato a NULL

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Grazie per l'interesse Piero.
    Parli di ut_id nella tabella sys_utenti giusto? Comunque non capisco la tua osservazione... non sono proprio un guru di mysql, quindi scusa se te lo chiedo, ma puoi essere più preciso?

  4. #4
    questo e' quanto vedo:

    CONSTRAINT `ana_agenzie_FK_1`
    FOREIGN KEY (`ut_id`)
    REFERENCES `sys_utenti` (`ut_id`)
    ON UPDATE RESTRICT
    ON DELETE SET NULL

    non puoi settare a NULL sys_utenti.ut_id nel caso di DELETE del record. Per due ragioni:

    1) e' una chiave primaria
    2) il campo e' NOT NULL

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Ah... quello si, a titolo operativo comunque, anche togliendo anche le ultime due righe dalla query mi da lo stesso errore... non è quello il problema.

    Aggiungo che ho provato sia su pc con xampp ultima versione (1.7) che su server linux debian etch con tutto aggiornato agli ultimi pacchetti disponibili, e su entrambi esce lo stesso errore.

  6. #6
    per curiosita' copio ed eseguo le tue righe con phpmyadmin togliendo solo:

    ON DELETE SET NULL

    e funziona.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Allora c'è qualcosa che non va nella mia configurazione... come dici tu, ho provato ad eseguire soltanto questo

    CREATE TABLE `ana_agenzie` (
    `ag_id` INTEGER( 11 ) NOT NULL AUTO_INCREMENT ,
    `ut_id` INTEGER( 11 ) NOT NULL ,
    `ag_nome` VARCHAR( 128 ) NOT NULL ,
    `ag_flag_del` INTEGER( 11 ) ,
    `created_at` DATETIME,
    `updated_at` DATETIME,
    PRIMARY KEY ( `ag_id` ) ,
    INDEX `ana_agenzie_FI_1` ( `ut_id` ) ,
    CONSTRAINT `ana_agenzie_FK_1` FOREIGN KEY ( `ut_id` ) REFERENCES `sys_utenti` ( `ut_id` ) ON UPDATE RESTRICT
    ) TYPE = InnoDB

    e sempre il solito errore...

  8. #8
    Ovviamente si presume che hai creato prima la tabella sys_utenti.... vero?



    e ovviamente verifica pure che sia abilitato l'engine InnoDB

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Ovviamente la tabella sys_utenti già esiste

    per l'engine innoDB credo di si, nel senso, ripeto, se tolgo la CONSTRAINT il tutto funziona. Ergo, innoDB dovrebbe essere attivo... o questa non è un condizione sufficiente?

  10. #10
    Ho risolto... o meglio... avrei risolto, ma non so come e perchè... ho provato ad eseguire la query su un server linux in cui carico i miei siti online, e la query se l'è pappata senza indugi... andando a fare un'esportazione della stessa, ho notato che le chiavi esterne, le aggiunge alla fine sotto forma di alter table, così ho provato a fare lo stesso in locale, e ha funzionato.

    Non contento, ho piallato la tabella in locale, fatto una show create table sul db in remoto, ctrl+c ctrl+v in locale... e zacchete... funziona di nuovo.

    Questa è la sintessi che mi mostra la show create table

    CREATE TABLE `ana_agenzie` (
    `ag_id` int(11) NOT NULL auto_increment,
    `ut_id` int(11) NOT NULL,
    `ag_nome` varchar(128) NOT NULL,
    `ag_flag_del` int(11) default NULL,
    `created_at` datetime default NULL,
    `updated_at` datetime default NULL,
    PRIMARY KEY (`ag_id`),
    KEY `ana_agenzie_FI_1` (`ut_id`),
    CONSTRAINT `ana_agenzie_FK_1`
    FOREIGN KEY (`ut_id`)
    REFERENCES `sys_utenti` (`ut_id`)
    ON UPDATE RESTRICT
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    non è proprio identica alla mia...

    CREATE TABLE `ana_agenzie`
    (
    `ag_id` INTEGER(11) NOT NULL AUTO_INCREMENT,
    `ut_id` INTEGER(11) NOT NULL,
    `ag_nome` VARCHAR(128) NOT NULL,
    `ag_flag_del` INTEGER(11),
    `created_at` DATETIME,
    `updated_at` DATETIME,
    PRIMARY KEY (`ag_id`),
    INDEX `ana_agenzie_FI_1` (`ut_id`),
    CONSTRAINT `ana_agenzie_FK_1`
    FOREIGN KEY (`ut_id`)
    REFERENCES `sys_utenti` (`ut_id`)
    ON UPDATE RESTRICT
    )Type=InnoDB;

    Cambia ENGINE al posto di Type per il tipo di db, i tipi int al posto di integer, e la sintassi della constrait che comincia con key... precisamente... basta che sostituisco Type con Engine, e tutto funziona.

    sveliamo questo mistero? non vorrei stare a cambiare le regole con cui symfony mi crea le tabelle, quindi devo trovare il modo di farle digerire dal mio mysql in locale per lo sviluppo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.