Hello,

I am trying to use Jooq 3.5.1 to generate some SQL to be run on a MySQL 
database. I cannot figure out what I am doing wrong, because the SQL query 
being produced is nothing like i'd expect based on the DSL.

FYI I am using Spring Boot, not sure if thats relevant or not :)

Heres how i'm creating the DSLContext:

    @Bean
    public DSLContext jooqDslContext(DataSource dataSource) throws 
SQLException {
        return DSL.using(dataSource.getConnection(), SQLDialect.MYSQL);
    }

Using this DSLContext, I have run the following:

String sql = migration.createTable("users").column("id", 
SQLDataType.INTEGER)
                .column("email_address", 
SQLDataType.VARCHAR.length(255).nullable(false))
                .column("password", 
SQLDataType.VARCHAR.length(64)).column("api_key", 
SQLDataType.VARCHAR.length(16)).getSQL();

I would expect the value of 'sql' to contain something like:

create table `users` (`id` int not null, `email_address` varchar(255), 
`password` varchar(64), `api_key` varchar(16));

However, it contains the following:

create table `users`(`id` signed not null, `email_address` char(255) not 
null, `password` char(64) null, `api_key` char(16) null)

It completely missed the datatype for the 'id' column (and randomly 
specified 'signed' as an integer type, even though I didnt specify anything 
of the sort), and it used char's instead of varchar's even though I 
specified varchar.

Trying to execute it produces the following exception:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an 
error in your SQL syntax; check the manual that corresponds to your MariaDB 
server version for the right syntax to use near 'signed not null, 
`email_address` char(255) not null, `password` char(64) null, `' at line 1

I thought this was because I was using the wrong SQLDialect or something, 
however I am explicitly stating I want to use the MySQL dialect in the 
DSLContext factory method (using the MariaDB dialect produces an identical 
result).

I have jooq, jooq-meta and jooq-codegen libraries on the classpath (I 
initially started with jooq, but added jooq-meta and jooq-codegen incase 
they contained the MySQL specific dialect implementation)

What am I doing wrong?

Thanks,
Erin

-- 
You received this message because you are subscribed to the Google Groups "jOOQ 
User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to