急!!!在通过ODBC使用MySQL时遇到的怪问题,哪位高手可以帮忙?

airpods1x 2008-03-24 02:49:05
strSQL.Format("select distinct user_name from tbl_log_gw");
TRY
{
CString strGwName;
if( gw.Open(CRecordset::forwardOnly,strSQL) )
{
while (!gw.IsEOF())
{
gw.GetFieldValue((short)0,strGwName);
if(!StringInList(strGwName,lsName))
{
lsName.AddTail(strGwName);
}
gw.MoveNext();
}
}
CATCH (CDBException, e)
{
TRACE("\n数据库连接错误:%s:%s",e->m_strError,e->m_strStateNativeOrigin);
return FALSE;
}
END_CATCH

会出现下面的错误:
数据库连接错误:Invalid descriptor index
:State:07009,Native:9,Origin:[MySQL][ODBC 5.1 Driver][mysqld-5.0.51a-community-nt]

如果我将select语句改为slect * from tbl_log_gw就可以执行,为什么啊?
急,在线等待!
...全文
97 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
airpods1x 2008-03-24
  • 打赏
  • 举报
回复
谢谢各位!
已经搞定了!

问题是由于我装了最新的MySQL ODBC Connector
现在我换成了3.51的版本就可以了。
看来还是大公司的东西可靠啊~~~~
散分!
liuyann 2008-03-24
  • 打赏
  • 举报
回复

select `user_name` from tbl_log_gw

加上` 试试了
== 思想重于技巧 ==
airpods1x 2008-03-24
  • 打赏
  • 举报
回复
在MySQL中执行没有问题,测试过了。
airpods1x 2008-03-24
  • 打赏
  • 举报
回复
mysql> describe tbl_log_gw ;
+----------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_name| varchar(64) | YES | | | |
| type | tinyint(3) unsigned | YES | | NULL | |
| level | tinyint(3) unsigned | YES | | NULL | |
| log_time | datetime | YES | | NULL | |
| content | mediumtext | YES | | NULL | |
+----------+---------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
liuyann 2008-03-24
  • 打赏
  • 举报
回复


mysql> desc tbl_log_gw;

的结果是什么?

另外试试 ,直接在mySQL中不是你的程序中,首先确认在mySQL没问题。
mysql> select `user_name` from tbl_log_gw;
== 思想重于技巧 ==
airpods1x 2008-03-24
  • 打赏
  • 举报
回复
表结构我再发一次:

¦Id ¦user_name ¦type ¦level ¦time ¦content ¦

下面是创建时的语句:

CREATE TABLE `tbl_log_gw` (
`id` int(11) NOT NULL auto_increment,
`user_name` varchar(64) default '' COMMENT '????',
`type` tinyint(3) unsigned default NULL COMMENT '????',
`level` tinyint(3) unsigned default NULL COMMENT '????',
`log_time` datetime default NULL COMMENT '??????',
`content` mediumtext COMMENT '????',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=gbk COMMENT='????';

望高手指点迷津!
liuyann 2008-03-24
  • 打赏
  • 举报
回复

mysql> desc tbl_log_gw;

贴一下表结构

== 思想重于技巧 ==
airpods1x 2008-03-24
  • 打赏
  • 举报
回复
另外,这语句我复制到MySQL下面查询就可以。通过ODBC才不行!
airpods1x 2008-03-24
  • 打赏
  • 举报
回复
select user_name from tbl_log_gw 还是不行!

但select * from tbl_log_gw就可以了。

这些字段我是复制过来的,能保证没有出错啊!!!
liuyann 2008-03-24
  • 打赏
  • 举报
回复

1. 试试 select user_name from tbl_log_gw , 看有没有问题

2. 是不是index 要重建一下
== 思想重于技巧 ==
airpods1x 2008-03-24
  • 打赏
  • 举报
回复
我的表结构如下:
|Id|user_name|type|level|time|content|

可能是受distinct的影响。iihero,你能看出问题吗?
我也尝试着加过其他字段,如distinct user_name,id,但这样还是不行!!!
:(

[Quote=引用 1 楼 iihero 的回复:]
你确认你的表结构里有一个字段是user_name吗?区分大小写吗? 加上`user_name`试试。一定要字段名正确。
能把你的表结构弄出来看看吗?
错误提示是说,从你的sql语句中无法以Field Index来取值。

另外,是不是受distinct影响?
[/Quote]
iihero_ 2008-03-24
  • 打赏
  • 举报
回复
你确认你的表结构里有一个字段是user_name吗?区分大小写吗? 加上`user_name`试试。一定要字段名正确。
能把你的表结构弄出来看看吗?
错误提示是说,从你的sql语句中无法以Field Index来取值。

另外,是不是受distinct影响?

56,677

社区成员

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

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