11

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

脚本运行并将架构插入到 h2 数据库中,但问题是所有数据库名称都是大写的(“xyz”被转换为“XYZ”)。

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

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

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

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

编辑:刚刚在 h2 控制台上试过这个,同样的事情。所以这不是一些初始化问题,它与“RUNSCRIPT”命令有关。

试过这个

RUNSCRIPT FROM '~/schema.sql'
4

2 回答 2

25

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

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

现在表格以正确的大小写插入

于 2013-07-08T15:25:27.807 回答
7

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

例如create table "products",而不是create table products

于 2015-05-19T22:21:55.583 回答