MySql DataTypes Size

MySQL Columns created in DataGrip 2017.3.4 are generating incorrect column sizes on certain datatypes. For instance, consider this schema.

CREATE TABLE sample (
   id BIGINT (19) AUTO_INCREMENT PRIMARY KEY,
   text VARCHAR (255) NOT NULL,
   created_datetime TIMESTAMP (19) DEFAULT CURRENT_TIMESTAMP NOT NULL
);

It SHOULD be:

CREATE TABLE sample (
   id BIGINT (20) AUTO_INCREMENT PRIMARY KEY,    -- (20) instead of (19)
   text VARCHAR (255) NOT NULL,
   created_datetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL    -- NO Field Size
);

My MySQL Version is: 10.0.33-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04

I DO NOT have this issue in Navicat.

Thank you.

0
2 comments

Hi,
Could you describe the way you generate your SQL? What do you invoke?
How do you configure your data source?
Thank you.

0
Avatar
Permanently deleted user

Vasily,

Thank you for your response. 

In MySQL I create a database

In DataGrip I create a New MySQL Datasource using the Datasource -> MySQL menu option and afterward create a table.

As I described in the original post, the schema of mytable SHOULD be the following which is generated by a mysqldump, or in DataGrip using the SQL Generator and "Definitions provided by RDBMS server" option.

-- mytable: table
CREATE TABLE `mytable` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`mytime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `mytable_id_uindex` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
;

The following WRONG schema is generated in DataGrip when using the SQL Scripts --> Source Editor menu option AND the Generated DLL options.

The incorrect table schema generated:

create table mytable
(
id BIGINT(19) auto_increment
primary key,
mytime TIMESTAMP(19) default CURRENT_TIMESTAMP not null
)
;

0

Please sign in to leave a comment.