mysql的语法我感觉很是奇怪。奇怪指的是用习惯了sqlserver,mysql的就很不习惯。现在遇到一个纳闷的问题。判断一张表是否存在,不存在就创建一张表。很简单的一条语句,妹的。一直跟我说要我检查sql语句。报的这个错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE IF NOT EXISTS yq_user_data_count103 (
  `id` bigint(20) NOT NULL' at line 59这条语句我是这样写的:CREATE TABLE IF NOT EXISTS yq_user_data_count103 (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `userid` bigint(20) DEFAULT NULL,
  `dateline` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;把这条语句放到mysql客户端去执行就是正常的。放到xml文件里解析就不行了。系统很多地方就是这样用的。也没报错。很是奇怪。你们怎么看?新年的最后一天还在上班的苦逼挨踢同胞们,please tell me how can I do ?顺便祝大家新年快乐。mysqltable

解决方案 »

  1.   

    CREATE TABLE IF NOT EXISTS yq_user_data_count103 (
                  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
                  `userid` BIGINT(20) DEFAULT NULL,
                  `dateline` DATE DEFAULT NULL,
                  PRIMARY KEY (`id`) ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    没有问题,你的代码是什么
      

  2.   

    代码是保密的。而且我可以确定的是代码没问题。
    之前xml文件里的是sqlserver建表语句。
    模块运行的时候,先解析xml的sql语句。
    现在因为项目的需要,我只是改成了mysql的语句。
    当然sqlserver的环境也换成了mysql的,而且也是会以mysql的环境来解析xml文件。
    你知道我在说啥不?思绪乱了。说话语无伦次了。
      

  3.   

    试过了。一样报错。现在我就觉得可能不是语句的问题,也仔细检查了代码,不是代码的问题。很纠结。mysql的还有没有其他的语句啊。
      

  4.   

    你重新编制1个程序,运行上述SQL语句,看看能否成功,MYSQL什么版本
      

  5.   

    断点调试,然后看一下你实际执行的SQL语句是什么。应该是程序中生成的SQL语句不正确。
      

  6.   

    实际执行的sql语句是正确的,但还是报错。我个人认为是hibernate的问题吧。等我先把问题解决了再来结贴哈。