The connection property 'zeroDateTimeBehavior' only accepts values of the form: 'exception', 'round'

The connection property 'zeroDateTimeBehavior' only accepts values of the form: 'exception', 'round' or 'convertToNull'. The value 'convertToNull ' is not in this set.


这个问题是解决以下问题出现的:
java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
问题原因是因为JDBC 
url=jdbc:mysql://xxx.aliyuncs.com:3306/xxxxx?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
字符串后面因为是从网页上复制的,后面多了一个空格。
错误信息中已经提示了 zeroDateTimeBehavior 属性可以接受 'exception', 'round' or 'convertToNull'中的一个。

只是因为后面多出的空格是不可见字符,所以很难看出问题。


默认是 exception,抛出异常

round 是返回:0001-01-01 00:00:00.0

convertToNull  就是转换为 null

======================文档信息========================

版权声明:非商用自由转载-保持署名-注明出处

署名(BY) :testcs_dn(微wx笑)

文章出处:[无知人生,记录点滴](http://blog.csdn.NET/testcs_dn)

==============欢迎关注我的个人微信订阅号(微wx笑)============


<think>好的,我现在需要解决用户在ROS中遇到的RLException错误,具体是“$(find pkg)命令只接受一个参数”的问题。首先,我得回忆一下ROS中的相关知识点,尤其是关于$(find pkg)的使用限制。 用户的问题提示错误是因为命令接收了多个参数,这说明在某个地方,可能是在launch文件中,用户错误地使用了$(find pkg)来获取多个参数,或者参数之间有空格未被正确转义。例如,可能在某个路径中包含了空格,导致被解析成多个参数。 接下来,我需要思考常见的错误场景。比如,在launch文件中,当指定文件路径时,如果路径中包含空格,直接使用$(find pkg)/path with space会导致问题,因为空格会被视为参数分隔符,从而触发该错误。这时候应该用引号将整个路径包裹起来,或者在路径中使用转义字符。 另外,可能用户在使用替换变量时,多个$(find pkg)组合在一起,而没有正确分隔,比如在某个参数中将两个find命令的结果连接,但没有正确处理,导致解析成多个参数。 我需要检查示例代码,比如用户可能在launch文件中写了类似<param name="file" value="$(find pkg)/file.txt $(find pkg)/another.txt" />,这样的写法会导致value被解析为两个参数,从而报错。正确的做法应该是用引号包裹整个值,或者使用其他方式合并路径。 此外,可能用户在使用某个命令时,参数部分没有正确闭合,比如漏掉了闭合的括号,导致后面的内容也被当作参数的一部分,从而产生多个参数。例如,$(find pkg/file.xml 这里如果pkg后面缺少了),可能会被解析成不同的参数。 总结下来,解决方案可能包括: 1. 检查launch文件中所有使用$(find pkg)的地方,确保每个替换只生成一个参数。 2. 对于包含空格的路径,使用引号包裹整个路径。 3. 确保替换变量的语法正确,括号闭合,没有多余的空格。 4. 可能需要将多个路径合并为一个参数,或者使用其他ROS提供的替换变量,如$(arg)来传递参数。 接下来,我需要验证这些可能性,给出具体的示例和修正方法。例如,错误的写法可能是: <node pkg="pkg" type="node" args="$(find pkg)/file with spaces.txt" /> 这里,路径中的空格导致args被分成多个参数,应改为: <node pkg="pkg" type="node" args=""$(find pkg)/file with spaces.txt"" /> 或者使用转义的空格: <node pkg="pkg" type="node" args="$(find pkg)/file\ with\ spaces.txt" /> 此外,如果用户尝试在同一个属性中使用多个$(find),比如: <param name="map" value="$(find pkg1)/map.png $(find pkg2)/config.yaml" /> 这会生成两个参数,应改为分开写在不同的属性中,或者用引号包裹整个值,使其视为一个字符串参数: <param name="map" value="$(find pkg1)/map.png $(find pkg2)/config.yaml" /> 不过,这里是否需要引号取决于具体的情况,可能仍然会被解析为两个路径,这时候可能需要用户确认是否需要合并为一个参数,或者调整launch文件的结构。 另外,检查是否有拼写错误,比如$(find pkg 缺少闭合的括号,导致后面的内容被当作参数的一部分,如: $(find pkg /path/to/file 应该修正为: $(find pkg)/path/to/file 总结解决方案后,需要分步骤说明,并给出示例代码,帮助用户理解如何修正错误。同时,提醒用户在编写launch文件时注意参数的正确格式,避免空格和语法错误。</think>### 解决方案:ROS中$(find pkg)命令的RLException错误处理 #### 错误原因 ROS的`$(find pkg)`命令用于在launch文件中定位包的路径,但**仅支持单个参数**。若其返回值中包含空格或语法错误,会被解析为多个参数,导致`RLException`[^1]。常见错误场景包括: 1. 路径包含空格(如`$(find pkg)/folder with space/file.txt`) 2. 语法闭合错误(如漏写闭合括号) 3. 多个`$(find)`命令未正确分隔 --- #### 修复步骤 1. **添加引号包裹路径** 若路径含空格,需用引号将其包裹为单一参数: ```xml <!-- 错误写法 --> <param name="config" value="$(find pkg)/my folder/config.yaml" /> <!-- 正确写法 --> <param name="config" value="$(find pkg)/my_folder/config.yaml" /> <!-- 避免空格 --> 或 <param name="config" value=""$(find pkg)/my folder/config.yaml"" /> <!-- 引号包裹 --> ``` 2. **检查语法闭合** 确保`$(find pkg)`的括号完整闭合: ```xml <!-- 错误写法 --> <node pkg="demo" type="node" args="$(find pkg /path/file)" /> <!-- 正确写法 --> <node pkg="demo" type="node" args="$(find pkg)/path/file" /> ``` 3. **合并多参数为单一值** 若需组合多个路径,需通过字符串操作合并: ```xml <!-- 错误写法(生成两个参数) --> <arg name="paths" value="$(find pkg1)/file1 $(find pkg2)/file2" /> <!-- 正确写法(合并为单参数) --> <arg name="paths" value="$(find pkg1)/file1:$(find pkg2)/file2" /> ``` 4. **使用`arg`传递复杂参数** 通过预定义`<arg>`简化复杂逻辑: ```xml <launch> <arg name="custom_path" default="$(find pkg)/complex path/file" /> <node pkg="pkg" type="node" args="$(arg custom_path)" /> </launch> ``` --- #### 验证方法 1. 使用`roslaunch --files`检查launch文件语法: ```bash roslaunch --files your_launch_file.launch ``` 2. 输出中若包含`RLException`,按上述步骤定位具体行号修正。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值