Creation of a simple field failed in MySql
by is a reserved word, and so is for

You should surround reserved words with backquotes (`) if you use them as table or column names. Just to be on the safe side, surround all column names with backquotes

CREATE TABLE bdt.transactions ( 
`transaction no`     int UNSIGNED NOT NULL  AUTO_INCREMENT,
`data`               date    ,
`by`                 int  NOT NULL  ,
`hours`              int  NOT NULL  ,
`for`                int  NOT NULL  ,
`transaction type`   set('normale','corso')   NOT NULL DEFAULT 'normale' ,
`activity`           text  NOT NULL  ,
CONSTRAINT pk_transactions PRIMARY KEY ( `transaction no` ) ) engine=InnoDB


Give it a Try !!!