# Hibernate does not support database name containing a dash (e.g. my-db) sign when using MySQL

**URL:** <https://discourse.hibernate.org/t/hibernate-does-not-support-database-name-containing-a-dash-e-g-my-db-sign-when-using-mysql/1378>\
**Category:** Hibernate ORM\
**Created:** [September 11, 2018, 7:12am UTC](https://discourse.hibernate.org/t/hibernate-does-not-support-database-name-containing-a-dash-e-g-my-db-sign-when-using-mysql/1378 "2018-09-11T07:12:05Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![sukolenvo](https://avatars.discourse-cdn.com/v4/letter/s/49beb7/32.png) [@sukolenvo](https://discourse.hibernate.org/u/sukolenvo)\
**Post date:** [September 11, 2018, 7:12am UTC](https://discourse.hibernate.org/t/hibernate-does-not-support-database-name-containing-a-dash-e-g-my-db-sign-when-using-mysql/1378/1 "2018-09-11T07:12:05Z")

</div>

The issue is can be reproduced with MySQL database (I’ve tested PostgreSQL, H2 - looks like working fine). Sample jdbc url I am using: jdbc:mysql://localhost:32793/my-db with Hikari datasource. Preexisting table:

```auto
create table `my-db`.test (id_key VARCHAR(80) not null, primary key (id_key)) engine=InnoDB

```

And entity has 1 new column `user_id`:

```auto
@Entity
@Table(name = "test")
public class Test {
  @Id
  @Column(name = "id_key", columnDefinition = "VARCHAR(80)")
  private String idKey;
  
  @Column(name = "user_id")
  private String userId;
}

```

Generated migration SQL is:

```auto
alter table my-db.test add column user_id varchar(255)

```

Which ends with Exception:

```auto
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-db.test add column user_id varchar(255)' at line 1
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.Util.getInstance(Util.java:408)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:943)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2483)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2441)
	at com.mysql.jdbc.StatementImpl.executeInternal(StatementImpl.java:845)
	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:745)
	at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:95)
	at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java)
	at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54)
	... 60 common frames omitted

```

As MySQL requires identifier with dash to be quoted, e.g.:

```auto
alter table `my-db`.test add column user_id varchar(255)

```

I’ve tried to update hibernate, my-sql drivers to latest version - issue not solved.  
I’ve tried to hibernate.globally\_quoted\_identifiers=true - table name is quted, but not catalog name. Issue not solved as well.

---

<div class="post-metadata">

**Author:** ![vlad](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/vlad/32/658_2.png) [@vlad](https://discourse.hibernate.org/u/vlad)\
**Post date:** [September 11, 2018, 7:30am UTC](https://discourse.hibernate.org/t/hibernate-does-not-support-database-name-containing-a-dash-e-g-my-db-sign-when-using-mysql/1378/2 "2018-09-11T07:30:56Z")

</div>

Maybe this issue is fixed by [HHH-12939](https://hibernate.atlassian.net/plugins/servlet/mobile#issue/HHH-12939).

Try to replicate it with [this test case template](http://in.relation.to/2018/06/04/best-way-write-hibernate-orm-issue-test-case/).

---

<div class="post-metadata">

**Author:** ![sukolenvo](https://avatars.discourse-cdn.com/v4/letter/s/49beb7/32.png) [@sukolenvo](https://discourse.hibernate.org/u/sukolenvo)\
**Post date:** [September 11, 2018, 11:03am UTC](https://discourse.hibernate.org/t/hibernate-does-not-support-database-name-containing-a-dash-e-g-my-db-sign-when-using-mysql/1378/3 "2018-09-11T11:03:45Z")

</div>

Hi @vlad. Thank you for quick reply. I’ve created [test](https://github.com/hibernate/hibernate-orm/pull/2531) to highlight that catalog name is not quoted. I was running it over mysql\_docker database profile.

---

<div class="post-metadata">

**Author:** ![sukolenvo](https://avatars.discourse-cdn.com/v4/letter/s/49beb7/32.png) [@sukolenvo](https://discourse.hibernate.org/u/sukolenvo)\
**Post date:** [September 14, 2018, 7:52am UTC](https://discourse.hibernate.org/t/hibernate-does-not-support-database-name-containing-a-dash-e-g-my-db-sign-when-using-mysql/1378/5 "2018-09-14T07:52:48Z")

</div>

This only effect schema update (creation of tables works fine). I have run `alter table` sql queries manually and waiting for new release with fix [https://github.com/hibernate/hibernate-orm/pull/2528](https://github.com/hibernate/hibernate-orm/pull/2528).

---

<div class="post-metadata">

**Author:** ![sukolenvo](https://avatars.discourse-cdn.com/v4/letter/s/49beb7/32.png) [@sukolenvo](https://discourse.hibernate.org/u/sukolenvo)\
**Post date:** [December 2, 2018, 9:17am UTC](https://discourse.hibernate.org/t/hibernate-does-not-support-database-name-containing-a-dash-e-g-my-db-sign-when-using-mysql/1378/11 "2018-12-02T09:17:57Z")

</div>

Upgrading to 5.4.0.CR1 solved the problem. Thank you.

---

<div class="post-metadata">

**Author:** ![shelton786](https://avatars.discourse-cdn.com/v4/letter/s/a3d4f5/32.png) [@shelton786](https://discourse.hibernate.org/u/shelton786)\
**Post date:** [April 18, 2024, 8:36am UTC](https://discourse.hibernate.org/t/hibernate-does-not-support-database-name-containing-a-dash-e-g-my-db-sign-when-using-mysql/1378/18 "2024-04-18T08:36:40Z")

</div>

Thank you for this solution. [Catlikesbest](https://www.catlikesbest.com)
