use type specified for primary key

Right now it's assuming VARCHAR(255) for type other than INT for the primary key. This is preventing the usage of VARCHAR for primary keys when using utf8mb4 since it's limited to 191 characters or less.