mysql高手都来看看:sql语句导入导出数据错误. 数据导入的时候错误里老是会出现near 'limit 1346720336'...,莫名其妙啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 filename里的斜扛被PHP的解释器“过滤了”用\\代替\试试 不好意思,我以为是PHP的帖子,不过道理应该是一样的 是的,使用API提交SQL语句的时候一定要注意对转义的问题!在C API里,有一个mysql_escape_string(tostring, fromstring, fromstrlen)的函数就是实现转义功能的,详细信息请参考mysql手册! 应该没错啊,c++中filename=d:mysql\\data\\mydatabase\\mybaseinfo.txt ,'\'是转义符,所以路径应该没错啊 不知道我的说法对不对,是这样的:在C API编程中filename="d:\\mysql\\data\\mydatabase\\mybaseinfo.txt"赋值给strQuery后,字符串已经理解为d:\mysql\data\mydatabase\mybaseinfo.txt然后将strQuery提交给mysql,它还是认为没有对"\"转义试试在提交strQuery给mysql前,再使用mysql_escape_string转义一下 mysql_escape_string要用到哪个库啊? 如果实在不清楚,调试一下,将最后提交给mysql时的strQuery打印出来看看 filename='d:/mysql/data/mydatabase/mybaseinfo.txt' 呵呵,我一直是按纯C API的方法论述的,重新看楼主的帖子后,楼主是用ADO做的!我对ADO不熟,那使用这样的笨办法试试,就是:filename="d:\\\\mysql\\\\data\\\\mydatabase\\\\mybaseinfo.txt"意思是filename这个参数被重叠赋值给其它变量几次,就要使用几层"\"的转义,如果不嫌烦,试试吧,:-) 我是在c++builder 中使用,我把libmysqld.lib包含进来了可总是出现错误:libmysqld.lib包含invalid OMD record,type 0x21,怎么解决呢 呵呵,我对mysql在c++ builder中的使用不了解了 shuixin13(犬犬(心帆)) :我把sql语句写成如下也不行,strQuery="Select * from baseinfo into outfile 'd:/mysql/data/db_dzcp/mybaseinfo.txt' "; 1种方法我想用mysql_escape_string,但在c++builder 中使用时,我把libmysqld.lib包含进来了可总是出现错误:libmysqld.lib包含invalid OMD record,type 0x21,怎么解决呢第2种方法我想直接用strquery=".....",然后直接adoquery->SQL->Add(strquery);但总会出错,没辙了 新发现:导入时用成功: strQuery="load data infile 'd:\\\\mysql\\\\data\\\\db_dzcp\\\\mybaseinfo.dzp' into table baseinfo"; dm1->adoDel->SQL->Add(strQuery);dm1->adoDel->ExecSQL();但导出时还是那个错误:near 'limit 1346720336'...,strQuery="Select * from baseinfo into outfile 'd:\\\\mysql\\\\data\\\\db_dzcp\\\\mybaseinfo.dzp' "; dm1->adoDel->SQL->Add(strQuery); dm1->adoDel->Open();导出你哪儿错了? 汗,怎么会出现 limit 134....... 的呀,建议你打开 MySQL 的 SQL 日志,然后看看日志里你刚才出错的SQL语句是什么 此SQL中的语句C++下体现的是非正常执行根本在于服务器的过滤 在my.ini 文件中加入下面一行[mysqld]log=d:/mysql/log/sql.log还是没有日记文件 求Statement与ResultSet的联系 MYSQL报08S01的错误 为什么创建mysql数据库表格不成功呢 重复查询问题 mysql 导入CVS问题 为什么只查出来一条记录? Mysql对中文支持的问题 mysql 服务意外中止 初次使用mysql遇到的问题!!! BUG 去哪看 关于一个计算的查询语句。 做MySQL的前途如何?
filename="d:\\mysql\\data\\mydatabase\\mybaseinfo.txt"
赋值给strQuery后,字符串已经理解为d:\mysql\data\mydatabase\mybaseinfo.txt
然后将strQuery提交给mysql,它还是认为没有对"\"转义试试在提交strQuery给mysql前,再使用mysql_escape_string转义一下
filename="d:\\\\mysql\\\\data\\\\mydatabase\\\\mybaseinfo.txt"意思是filename这个参数被重叠赋值给其它变量几次,就要使用几层"\"的转义,如果不嫌烦,试试吧,:-)
strQuery="Select * from baseinfo into outfile 'd:/mysql/data/db_dzcp/mybaseinfo.txt' ";
第2种方法我想直接用strquery=".....",然后直接adoquery->SQL->Add(strquery);但总会出错,没辙了
导入时用成功: strQuery="load data infile 'd:\\\\mysql\\\\data\\\\db_dzcp\\\\mybaseinfo.dzp' into table baseinfo";
dm1->adoDel->SQL->Add(strQuery);dm1->adoDel->ExecSQL();但导出时还是那个错误:near 'limit 1346720336'...,
strQuery="Select * from baseinfo into outfile 'd:\\\\mysql\\\\data\\\\db_dzcp\\\\mybaseinfo.dzp' ";
dm1->adoDel->SQL->Add(strQuery); dm1->adoDel->Open();
导出你哪儿错了?
建议你打开 MySQL 的 SQL 日志,
然后看看日志里你刚才出错的SQL语句是什么
中的语句C++下体现的是
非正常执行
根本在于服务器的过滤
[mysqld]
log=d:/mysql/log/sql.log
还是没有日记文件