单条记录出错的问题

dingyanwei 2010-11-12 11:13:58
1、数据库中存在数据N条

2、通过 where a='162' 筛选此记录出错,出错如下


3、通过 where a like '162' 筛选此记录可以显示

4、使用mysqlfront试图显示含有该记录列表时出现错误如下:


说明:只要不是此条数据,不会有任何问题。
我的mysql max_allowed_packet = 32M
...全文
156 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxq19851204 2010-11-12
  • 打赏
  • 举报
回复
mysql> select B.id,B.stuname,B.stuid from jj.ks_studentdata as B where B.stucode="31!36!32!"; 
+-------+----------+-----------+
| id | stuname | stuid |
+-------+----------+-----------+
| 22866 | 228CAC82 | 31!36!32! |
+-------+----------+-----------+
1 row in set (0.05 sec)

测试几行有结果,测试全部就会出错。
lxq19851204 2010-11-12
  • 打赏
  • 举报
回复
mysql> select B.id,B.stuname,B.stuid from jj.ks_studentdata as B where B.stucode="31!36!32!";                                                                   +-------+----------+-----------+                                                | id    | stuname  | stuid     |                                                +-------+----------+-----------+                                                | 22866 | 228CAC82 | 31!36!32! |                                                +-------+----------+-----------+                                                1 row in set (0.05 sec)                                                         
lxq19851204 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 acmain_chm 的回复:]
如果你用MYSQL命令行一切正常。说明数据库端正常。
一般情况下应该是你的记录中有BLOB类型的字段,而mysqlfront应该是试图把这些信息全部取出。

show create table ks_studentdata 贴出来看一下。

或者不取BLOB字段时试一下
SELECT col1,col2,col3 FROM ks_studentdata stucode = "31!36……
[/Quote]
他刚才把表传给我测试,这个表的字段太多了。stucode VARCHAR(255),不过在我mysqlfront测试没有问题,在命令行下出现:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.0.51b-community-nt MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select * From jj.ks_studentdata where stucode="31!36!32!";
ERROR 2020 (HY000): Got packet bigger than 'max_allowed_packet' bytes
mysql>
ACMAIN_CHM 2010-11-12
  • 打赏
  • 举报
回复
如果你用MYSQL命令行一切正常。说明数据库端正常。
一般情况下应该是你的记录中有BLOB类型的字段,而mysqlfront应该是试图把这些信息全部取出。

show create table ks_studentdata 贴出来看一下。

或者不取BLOB字段时试一下
SELECT col1,col2,col3 FROM ks_studentdata stucode = "31!36!32!"
lxq19851204 2010-11-12
  • 打赏
  • 举报
回复
上面少了Where
zuoxingyu 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dingyanwei 的回复:]
cmd命令行不会,在mysqlfront上不行。
[/Quote]

命令行下不会,可以排除是数据库本身的问题。换个工具试试。

在你的程序调用的时候会报错么??
loveflea 2010-11-12
  • 打赏
  • 举报
回复
把mysql服务器的 max_allowed_packet加大到128MB ,客户端的这个参数也加大到128MB 再试一试呢?

set global max_allowed_packet = 128*1024*1024;
lxq19851204 2010-11-12
  • 打赏
  • 举报
回复
我在mysqlfront上测试可以出现这条纪录:
SQL语句是:
SELECT * FROM ks_studentdata stucode = "31!36!32!"

我的MYSQL版本是:5.0.51b OCBC为:5.1.11

看WWWWA有什么解决问题..
dingyanwei 2010-11-12
  • 打赏
  • 举报
回复
cmd命令行不会,在mysqlfront上不行。
WWWWA 2010-11-12
  • 打赏
  • 举报
回复
在MYSQL命令行下测试,结果如何
lxq19851204 2010-11-12
  • 打赏
  • 举报
回复
群里传文件给我测试下。
dingyanwei 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lxq19851204 的回复:]
dingyanwei
(教之初) 也是用MYSQL呀,我一直以为你是用MSSQL。
[/Quote]

mysql最忠实的用户了
从来不用mssql
lxq19851204 2010-11-12
  • 打赏
  • 举报
回复
dingyanwei
(教之初) 也是用MYSQL呀,我一直以为你是用MSSQL。
dingyanwei 2010-11-12
  • 打赏
  • 举报
回复
补充下 3、where a like '162' 也会出错

应该是某个字段出了问题
WWWWA 2010-11-12
  • 打赏
  • 举报
回复
http://dev.mysql.com/downloads/connector/odbc/5.1.html
WWWWA 2010-11-12
  • 打赏
  • 举报
回复
升级MYSQL ODBC为5.12,再试试
dingyanwei 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 wwwwb 的回复:]
REPAIR TABLE 此表试试
[/Quote]

不是表的问题,只要删了这条记录就没事

下载地址:http://d.ksxt.net/err/mysqlblob.rar
因为导出不能成功,我只有把mysaql\data\xxxx下的表复制过来了。
里面就剩有问题的那条记录了。
wwwwb 2010-11-12
  • 打赏
  • 举报
回复
REPAIR TABLE 此表试试
dingyanwei 2010-11-12
  • 打赏
  • 举报
回复
试过了,增大到320M,无效。
loveflea 2010-11-12
  • 打赏
  • 举报
回复
修改完max_allowed_packet后要断开和mysql的连接,然后重新连接上,在测试读取记录;

mysql>set global max_allowed_packet = 256*1024*1024;
mysql>exit

mysql =uroot -p
mysql>select B.id,B.stuname,B.stuid from jj.ks_studentdata as B;
加载更多回复(22)

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧