我有一个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'
答案 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