springboot H2 linux下搭建使用

这次研究是H2数据库了 , 关键还是再Linux下进行搭建部署的 , 被这个数据库快弄死了弄了4天时间 , 现在大致可以用了 , 还有些细节需要修正 。
我这边使用的是springboot集成模式 。直接使用代码启停方式的就和我的描述就不一样了 。
H2数据库有3钟模式mem , file , remote 3种模式 。
内存就不说了 , 这个就是临时的 , 我觉得用内存还不如jvm内存呢 。没啥意思 。当然也是由于我没有细究的缘故 。
file模式是本地模式 。本地创建相应的数据库文件 , 然后进行调用 。这里会存在个问题就是本地用了file之后 , 我其他电脑想访问这个数据库就是没法打开 。报错是数据库被占用 。这个是真心难受 。
那么使用remote模式这边会存在直接springboot启动起不来 。
那么这会就需要借用H2数据库官网上的启动方式了 。网址:http://www.h2database.com/
这里将最新版的程序下载下来 。version 2.1.214这个版本 , 在本地解压后bin目录下有个h2w.bat 文件 , windows下直接启动就好了 。Linux下就需要使用指令去启动了 。
相关指令如下:
java -cp h2-2.1.214.jar org.h2.tools.Server -web -webAllowOthers -tcp -tcpAllowOthers -ifNotExists
这里我详细说几个参数webAllowOthers , web管理界面是否在其他IP中可以访问 , tcpAllowOthers  , 其他电脑是否可以通过remote模式访问该系统的H2数据库 , ifNotExists数据库不存在时是否允许创建 , 一般linux启动的时候这个是不开启的 , 不然你的linux系统中会充斥着一堆杂七杂八的数据库 。通过linux系统自启 。
如果你想修改默认的tcp端口 , 那也是可以的需要将这个入参带上    -tcpPort 19200
如果大家好奇有哪些入参可以带入 , 我在这边就稍微截点源码出来:
1 public void init(String... args) { 2// set the serverPropertiesDir, because it's used in loadProperties() 3for (int i = 0; args != null && i < args.length; i++) { 4if ("-properties".equals(args[i])) { 5serverPropertiesDir = args[++i]; 6} 7} 8Properties prop = loadProperties(); 9port = SortedProperties.getIntProperty(prop,10"webPort", Constants.DEFAULT_HTTP_PORT);11ssl = SortedProperties.getBooleanProperty(prop,12"webSSL", false);13allowOthers = SortedProperties.getBooleanProperty(prop,14"webAllowOthers", false);15setExternalNames(SortedProperties.getStringProperty(prop, "webExternalNames", null));16setAdminPassword(SortedProperties.getStringProperty(prop, "webAdminPassword", null));17commandHistoryString = prop.getProperty(COMMAND_HISTORY);18for (int i = 0; args != null && i < args.length; i++) {19String a = args[i];20if (Tool.isOption(a, "-webPort")) {21port = Integer.decode(args[++i]);22} else if (Tool.isOption(a, "-webSSL")) {23ssl = true;24} else if (Tool.isOption(a, "-webAllowOthers")) {25allowOthers = true;26}else if (Tool.isOption(a, "-webExternalNames")) {27setExternalNames(args[++i]);28} else if (Tool.isOption(a, "-webDaemon")) {29isDaemon = true;30} else if (Tool.isOption(a, "-baseDir")) {31String baseDir = args[++i];32SysProperties.setBaseDir(baseDir);33} else if (Tool.isOption(a, "-ifExists")) {34ifExists = true;35} else if (Tool.isOption(a, "-ifNotExists")) {36ifExists = false;37} else if (Tool.isOption(a, "-webAdminPassword")) {38setAdminPassword(args[++i]);39} else if (Tool.isOption(a, "-properties")) {40// already set41i++;42} else if (Tool.isOption(a, "-trace")) {43trace = true;44}45}46 //if (driverList != null) {47 //try {48 //String[] drivers =49 //StringUtils.arraySplit(driverList, ',', false);50 //URL[] urls = new URL[drivers.length];51 //for(int i=0; i<drivers.length; i++) {52 //urls[i] = new URL(drivers[i]);53 //}54 //urlClassLoader = URLClassLoader.newInstance(urls);55 //} catch (MalformedURLException e) {56 //TraceSystem.traceThrowable(e);57 //}58 //}59for (String[] lang : LANGUAGES) {60languages.add(lang[0]);61}62if (allowOthers) {63key = null;64}65updateURL();66}

经验总结扩展阅读