今天遇到个趣的问题,linux上springboot启动,连接达梦数据库报错。
解决思路:
1)是不是数据库本身有问题,客户端登录没问题。

2)排查是不是war包问题,本地连接数据库,没问题。

3)是不是启动参数有问题?因为多数据源的关系,在启动参数里配置了数据源跟驱动名
--spring.datasource.url=jdbc:dm://172.31.98.190:5236/DMSERVER
--spring.datasource.driverClassName=dm.jdbc.driver.DmDriver
检查了下,没任何问题。

4)是不是有特殊字符?
用vi -b start.sh查看了启动脚本,并未发现^M这样的特殊字符。
划重点,这个也是经常出现的特殊字符导致脚本无法启动的元凶之一。

5)去除启动参数,将启动参数写死放到application.properties中,重新打包,上传上去,./start.sh,启动竟然不报错了。

6)回头再检查这两行参数,将参数逐行删除,再手动打上去,定位到参数行
--spring.datasource.driverClassName=dm.jdbc.driver.DmDriver
将DmDriver 后的空格删除,再重新手动打个空格,:wq保存,重启启动,成功。

7)为什么?中午吃饭去了,下午回来再看。路上怀疑是隐藏字符。

8)下午回来,按照隐藏字符的思路去百度了下,看还有什么方法可以查看linux上的隐藏字符。找到了个命令,cat -A。
cat -A start.sh

发现信息如下
--spring.datasource.url=jdbc:dm://172.31.98.190:5236/DMSERVERM-BM- $
--spring.datasource.driverClassName=dm.jdbc.driver.DmDriverM-BM- $

多了M-BM-这串特殊字符,真相大白。

9)M-BM-是什么特殊字符?哪位大神能告诉我下?我关键字只搜索到了BM算法,这是一个查找替换算法,另外还搜到了个帖子,说放在oneNote里再贴出来也出现这个问题。所以猜测是运维人员在windows上批量替换数据库参数导致。

10)在window上编辑sh脚本的时候,上传到linux上最好vi -b、cat -A先看下是不是弄了些特殊字符出来。

.xxx.sh脚本无法启动,原来都是特殊字符搞的鬼?的更多相关文章

  1. sh - 脚本学习 启动/停止/重启/部署jetty crontab

    ===============jettytest.sh ====================== #!/bin/shjettysh_path=/usr/local/jetty/bin/jetty. ...

  2. 执行xxx.sh脚本的两种方式

    因公司测试环境的登录模式有2种,大佬们直接写了个脚本完成一键切换,看了其中的脚本文件,其中出现了send "sh out.sh\r":一直疑惑这里的sh out.sh的意思...查 ...

  3. ? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作。那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别是fork、source和exec。 1. fork 即通过sh 脚本名进行执行脚本的方式。下面通过一个简单的例子来讲解下它的特性。 创建father.sh,内容如下: #!/bin/bas

    ? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作.那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别 ...

  4. CentOS 升级 openSSH+ sh脚本自动运维

     升级前后对比 openSSH作为linux远程连接工具,容易受到攻击,必须更新版本来解决,低版本有如下等漏洞: OpenSSH 远程代码执行漏洞(CVE-2016-10009) OpenSSH au ...

  5. root.sh脚本支持checkpoints文件实现重复运行

    安装集群GRID/GI一般包括三个过程:首先,运行OUI/RunInstaller输入集群配置信息,其次,拷贝/编译集群文件,最后,以root用户运行root.sh脚本配置集群/启动集群,其中运行ro ...

  6. 数据仓库005 - 复习Linux shell命令 - crontab调度 sh脚本 后台执行 软连接

    一.crontab调度 对于linux 自带crontab而言,      xxx.sh的一般编写格式以#!/bin/bash 解释器开头,可在脚本中加入: date 但是,shell脚本执行 需要 ...

  7. 服务器sh脚本自动登录(mac)

    一不小心自己也有三台虚拟机了,每次都ssh -username@ip 然后在输入密码着实蛋疼,第一反应时脚本登录,但是作为脚本是逐行执行命令,是无法做到等待一个密码提示出现在输入密码的.查到mac下可 ...

  8. linux执行sh脚本文件命令

    linux执行sh脚本文件命令 很多时候需要多个命令来完成一项工作,而这个工作又常常是重复的,这个时候我们自然会想到将这些命令写成sh脚本,下次执行下这个脚本一切就都搞定了,下面就是发布代码的一个脚本 ...

  9. sh脚本执行Java程序

    1.不引用Jar包或者资源文件夹 最简单的程序Hello World. 首先创建Hello.java public class Hello { public static void main(Stri ...

随机推荐

  1. 记2017沈阳ICPC

    2017沈阳ICPC 10月20日 早上十点抵达沈阳,趁着老师还没到,跑去故宫游玩了一下,玩到一点多回到宾馆,顺便吃了群里大佬说很好吃的喜家德虾饺(真的好好吃),回到宾馆后身体有点不舒服了,头晕晕的, ...

  2. GoLand Active Code

    56ZS5PQ1RF-eyJsaWNlbnNlSWQiOiI1NlpTNVBRMVJGIiwibGljZW5zZWVOYW1lIjoi5q2j54mI5o6I5p2DIC4iLCJhc3NpZ25lZ ...

  3. H5学习笔记-应用缓存,Web worker,服务器发送事件

    ↑亮了 应用缓存用法 <!DOCTYPE HTML> <html manifest="demo.appcache"> <body> The co ...

  4. elk 系列:Elasticsearch 7.2 集群部署+TLS 加密+认证登陆

    背景 2019年5月21日,Elastic官方发布消息: Elastic Stack 新版本6.8.0 和7.1.0的核心安全功能现免费提供. 这意味着用户现在能够对网络流量进行加密.创建和管理用户. ...

  5. 关于过两级mux的时序约束的添加(一个非常经典的时序约束问题)

    非常开心自己的微信公众号: <数字集成电路设计及EDA教程> 关注者超过了1700 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具 ...

  6. Java - 格式化输出JSON字符串的两种方式

    目录 1 使用阿里的fastjson 1.1 项目的pom.xml依赖 1.2 Java示例代码 2 使用谷歌的gson 2.1 项目的pom.xml依赖 2.2 Java示例代码 1 使用阿里的fa ...

  7. 打开pycharm,提示invalid Log Path【已解决】

     问题:打开pycharm,提示invalid Log Path 解决: 网上其他方法都说重装,这个成本有点高,所以我不去尝试. 因为我下载的是免安装版,所以使用时生成的文件是后来才生成的,所以我尝试 ...

  8. CentOS 7离线安装Ansible

    前言 我一直都想成为自动化运维界最亮的仔,奈何自己实力不允许.不过,我一直都在奋斗的路上:这不,最近就在学习自动化运维界的神器--Ansible. 要系统的学习一下Ansible,那就是要先搭建学习环 ...

  9. 洛谷 P1311 【选择客栈】

    枚举在那个咖啡店喝咖啡 想要计算咖啡店两侧同色的客栈的对数 枚举i求和(左边第i种颜色的个数*右边第i种颜色的个数) 前缀和+后缀和 f[i][j]f[i][j]f[i][j]表示到第i家客栈及之前颜 ...

  10. 将web工程署到Linux简单实现

    1,将数据库文件导出并导入到Linux下的数据库中 2,将数据库连接池的连接IP改为Linux所在服务器的 3,将工程文件以war包形式导出 4,利用secureCRT,Xshell等工具远程连接Li ...