环境win2003,mssql2008,mysql odbc 5.1,
我在win2003上建立一个odbc源,然后在mssql中配置了一个数据连接测试是成功的,我可以select,update,delete,但是就不能insert,错误信息是
/* OLE DB provider "MSDASQL" for linked server "MYSQLAPP" returned message "[MySQL][ODBC 5.1 Driver][mysqld-5.0.52]Commands out of sync; you can't run this command now".Msg 7343, Level 16, State 2, Line 1The OLE DB provider "MSDASQL" for linked server "MYSQLAPP" could not INSERT INTO table "[MSDASQL]". */

解决方案 »

  1.   

    登录用户是否 有INSERT权限
      

  2.   

    我在配dns时用的是root 用户,语句是insert into openquery(mysqlapp,'select id,name,code from temp') select 1,'1','2'
      

  3.   

    表是否 有主键,root 用户权限是什么
    试试
    insert into openquery(mysqlapp,'select id,name,code from temp') values(1,'1','2')
      

  4.   

    insert into openquery(mysqlapp,'select id,name,code from temp') values(1,'1','2')我也试过 还是错误?而且我就是insert 不行,update delect select 的都可以
      

  5.   

    我对mysql不是很熟,我不知道是不是root用户还需要再配置一遍对于某个库的权限
      

  6.   

    在WINXP+MYSQL 5.1+SQL2005下建立链接服务器,可插入记录
      

  7.   

    我连接的是win2003,在odbc管理器中,系统dsn添加了odbc5.1数据源,在sql2008中新建服务器连接我的数据源
      

  8.   

    在你的机器上先直接用MYSQL的命令行工具用你程序中同样的账号连接一下,执行相同的INSERT语句,看一下是否能够成功,如果出错,则贴出你的语句和错误信息。这样可以先断定问题是否在MYSQL本身权限或者其它MYSQL相关原因。如果没有问题,则说明问题在你的代码中或者驱动程序上。
      

  9.   

    insert into openquery(mysqlapp,'select id,name,code from temp') select 1,'1','2'这是我的代码,错误信息就是上面的 /* OLE DB provider "MSDASQL" for linked server "MYSQLAPP" returned message "[MySQL][ODBC 5.1 Driver][mysqld-5.0.52]Commands out of sync; you can't run this command now".Msg 7343, Level 16, State 2, Line 1The OLE DB provider "MSDASQL" for linked server "MYSQLAPP" could not INSERT INTO table "[MSDASQL]". */
    这个是我在mssql2008中运行代码时报的错误信息
      

  10.   

    我在mysql中可以正常insert数据
      

  11.   


    这个SQL语句能在MYSQL正常执行?!   楼主没必要这样吧。
      

  12.   

    这个是我在mssql2008中执行的,mysql不是这个
      

  13.   

    将你MYSQL表的
    建表及插入记录的SQL贴出来 
      

  14.   

    我用navicate lite建立一个测试用表,字段是 id int,name varchar(100),code varchar(100),表中插入了一条数据。我在mssql2008中可以对这条进行select可以看到数据。update,delete也是成功的
      

  15.   

    贴建表及插入记录的SQL
    我在2005下测试一下 
      

  16.   

    CREATE TABLE `temp` (
      `ID` int(11) NOT NULL DEFAULT '0',
      `NAME` varchar(100) DEFAULT NULL,
      `CODE` varchar(100) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO temp VALUES ('1', 'DifferentName', '2');
      

  17.   

    我现在还没到实现功能的程度,我现在只是想测试将mssql2008和mysql连接起来后,在mssql2008这端去操作mysql,向库中插入一条数据然后在修改在删除,试一下能不能用。现在就是insert不能用
      

  18.   

    insert into openquery(AA,'select id,name,code from temp') select 1,'1','2';
    SELECT * FROM  openquery(AA,'select id,name,code from temp')
    1 DifferentName 2
    1 1 2
    1 1 2在2005下测试正常
      

  19.   

    你可以insert?那我配置的是不是和你不一样?在配置中有什么要注意的么?
      

  20.   

    可以,只是在系统DSN中配置,SHOW GRANTS FOR 'root'@'localhost';
    贴结果
      

  21.   

    mysql> show grants for 'root'@'localhost'
        -> ;
    +-------------------------------------------------------------------------------
    ---------------------------------------------------------+
    | Grants for root@localhost
                                                             |
    +-------------------------------------------------------------------------------
    ---------------------------------------------------------+
    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*6BB
    4837EB74329105EE4568DDA7DC67ED2CA2AD9' WITH GRANT OPTION |
    | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
                                                             |
    +-------------------------------------------------------------------------------
    ---------------------------------------------------------+
    2 rows in set (0.00 sec)
      

  22.   

    在DSN配置中是什么用户登录?
      

  23.   

    我现在换了一个和你一样的环境用mssql2005,我现在也可以实现了,那为什么mssql2008不能实现呢?我用mssql2008做insert就报错
      

  24.   

    mssql2008、MYSQL都是32位的,是不是2008的兼容性有问题?还是odbc5.1.8的驱动有问题?我用2005怎么就好用?