H2“runscript”命令将所有表名转换为大写

时间:2013-07-08 14:35:53

标签: mysql sql h2 init

我有一个sql脚本(它只是架构定义)。该脚本是一个修改版本(摆脱h2不喜欢的坏字符)的mysql哑。

脚本运行并且模式被插入到h2数据库中,但问题是所有数据库名称都是大写的('xyz'被转换为'XYZ')。

我需要它们保持小写,因为我的应用程序正在寻找小写(并且mysql db中的所有表都是小写的)。

为什么会这样?我怎么能告诉h2不这样做?有没有更好的方法将模式定义插入到h2中?

这是我正在运行的INT命令:

jdbc:h2:mem:~/test;INIT=runscript from '~/schema.sql'
编辑:在h2控制台上试过这个,同样的事情。所以这不是一些INIT问题,而是使用'RUNSCRIPT'命令。

试过这个

RUNSCRIPT FROM '~/schema.sql'

2 个答案:

答案 0 :(得分:20)

发现了这个问题。默认情况下,h2将此设置设置为true DATABASE_TO_UPPER。将其设置为false将按预期保存数据。所以在我的INIT命令(之前)中,我输入了:

 jdbc:h2:mem:~/test;DATABASE_TO_UPPER=false;INIT=runscript from '~/schema.sql'

现在表格正在插入正确的案例

答案 1 :(得分:7)

另一种选择是将表/列名称用双引号括起来以保留套管。

E.g。 create table "products"代替create table products