ERROR [42000]杂谈

出错环境:windows server 2003+sqlserver2008 r2+odbc32

出错详情:System.Data.Odbc.OdbcException:ERROR [42000] [Microsoft][ODBC SQL Server Driver]

[SQL Server]字符串‘7‘后的引号不完整

如图:

SQL语句如右:insert into 测试(‘张三‘,‘7 7 7 7 0 6 8‘,‘13580891274‘);

初步处理:

因为我写的程序,在执行insert语句,如果失败了,我把SQL语句写到了日志中。

所以,我在日志中,将这个执行失败的sql语句,手动复制到sqlserver 2008 中执行,成功了。

--------

那么问题就来了,为什么明明成功的sql语句,自己写程序会执行报错呢?

问题查询:

第一肯定是搜索问题,如果你搜索 ERROR [42000],很多大神会告诉你,这是保留字问题。

但是sql语句我手动复制到sqlserver2008能执行,所以排除。

深入思考:

到这里我们就得开始考虑字符问题了,毕竟表面上我们看到的没有任何问题,而且复制到sqlserver中也能执行。很多浮躁的哥们,肯定又开始骂微软,或者开始考虑是不是sqlserver的bug了

1,我将日志的sql语句【日志写出来的sql不能编辑,否则看不到原始的字符编码】,用UltraEdit打开,发现电话号码的字符既然有00,如图:

再来看看 文本文档显示的情况:

在文本文档中,00显示既然和空格无异。

【ps:00在windows表示中断,如果对00有更深的描述,欢迎留言指正】

解决问题:

既然问题发现了,那么解决就好办了,只需要把电话号码中的00编码去掉,即可。

替换方法[写的一个替换方法]

如有其他问题或建议,也欢迎企鹅号指教2446681809

时间: 2024-12-10 03:20:59

ERROR [42000]杂谈的相关文章

14.7 InnoDB Table Compression

pdf:http://download.csdn.net/detail/paololiu/9576929 14.7 InnoDB Table Compression 14.7.1 Overview of Table Compression 14.7.2 Enabling Compression for a Table 14.7.3 Tuning Compression for InnoDB Tables 14.7.4 Monitoring Compression at Runtime 14.7.

BizTalk 开发系列(四十一) BizTalk 2010 BAM 安装手记

使用64位系统可以支持更大的内存,现在服务器基本上都使用64位系统.微软从Windows Server 2008 R2开始服务器版的操作系统也只支持64位了,不过对于像BizTalk这种“繁杂的东西”在64位系统下确实增添了不少麻烦. 微软于9月底正式发布了面向企业SOA解决方案的最新产品BizTalk Server 2010.最新想搭一个最新的环境.本为装了BizTalk不下百遍的我,应该可以很快就搞起来.但是这次安装太纠结了.特别是在BAM方面,竟然耗了近 两天(白天上班)才搞定.是不是技术

删除或清空具有外键约束的表数据报-ERROR 1701 (42000)

OS:  centos 6.3 DB:5.5.14 mysql> select database();+------------+| database() |+------------+| sakila     |+------------+1 row in set (0.00 sec) mysql> delete from actor;ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constra

RDS还原数据库时报错:ERROR 1227 (42000) at line 78664

最近公司准备公司的整套架构从IDC机房向云上迁移,在RDS上做数据库恢复的时候遇到如下的问题: [[email protected] ~]# mysql -uadmin -h 10.137.212.36 -p </root/mysql_dump.sql Enter password: ERROR 1227 (42000) at line 78664: Access denied; you need (at least one of) the SUPER privilege(s) for this

ERROR 1044 (42000): Access denied for user &#39;&#39;@&#39;localhost&#39; to database &#39;mysql&#39;

在centos下安装好的mysql,用root帐号连上mysql,查看数据库结果只有information_schema库,我原来的库和mysql库都不见了,然后执行use mysql提示错误,如下: mysql> use mysql; ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql' 提示:ERROR 1044 (42000): Access denied for user ''@'loc

[转]MySQL保留关键字(SQL Error: 1064, SQLState: 42000错误)

在MySQL 中,下表中的字显式被保留.其中大多数字进制被标准SQL 用作列名和/ 或表名( 例如,GROUP ) .少数被保留了,因为MySQL 需要它们,( 目前) 使用yacc 解析程序.保留字 被引起来后可以用作识别符. 你不小心使用了下面的关键字  那么就会报这个错误 “SQL Error: 1064, SQLState: 42000错误” ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY

Mysql,ERROR 1044 (42000): Access denied for user &#39;&#39;@&#39;localhost&#39; to database &#39;mysql&#39;

ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql' 刚在服务器上装上mysql,发现以root加密码的方式总是登录不了,而直接输入mysql则直接就可以登录了.或者以mysql –u root方式可以登录,但是实习上登录上去也是一个空用户(''@'localhost'),不是root用户,看不了其他数据库. 干货,删除空用户方法 1.关闭mysql service mysqld stop 或者

MySQL - ERROR 1235 (42000)

1.1.1 现象 导出一个MySQL数据库到一个文件,再导入的时候出现如下错误: ERROR 1235 (42000) at line 267: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' 1.1.2 原因 导出的内容包含了触发器,所以在导入的时候就出现了这个错误. 1.1.3 解决 导出的时候增加--triggers

Mybatis批量删除之Error code 1064, SQL state 42000;

(一)小小的一次记载. (二):最近的项目都是使用MyBatis,批量新增自己都会写了,但是一次批量删除可把我给折腾了下,写法网上都有,但是照着做就是不行,最后问公司的人,问网友才得到答案,那就是jdbc中需要在url中指定允许进行进行多条语句同时执行. 自己在写批量更新的时候也把相应的语句打印出来了的,复制出来执行是没问题,但是用junit测试的时候一直报错如下 Error code 1064, SQL state 42000: You have an error in your SQL sy