【问题标题】:SQL error while executing the query执行查询时出现 SQL 错误
【发布时间】:2016-11-11 22:16:58
【问题描述】:

在分析过程中发现了 4 个错误。

结束引号 ' 是预期的。 (在位置 510 的“”附近)

应使用逗号或右括号。 (靠近“',`email` varchar(100) NOT NULL, `active` int(1) NOT NULL default ‘0'" 在位置 181)

语句的意外开头。 (靠近位置 268 的“20”)

无法识别的语句类型。 (在位置 272 的“NOT NULL”附近)

SQL 查询:

CREATE TABLE IF NOT EXISTS `users`
(
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL,
  `password` varchar(32) NOT NULL,
  `online` int(20) NOT NULL default ‘0',
  `email` varchar(100) NOT NULL,
  `active` int(1) NOT NULL default ‘0',
  `rtime` int(20) NOT NULL default ‘0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

INSERT INTO `users` (`id`, `username`, `password`, `online`, `email`, `active`, `rtime`) 
VALUES (1, ‘testing’, ‘testing’, 0, ‘fake@noemail.co.uk’, 0, 0); 

【问题讨论】:

  • 你的问题中有单引号。

标签: mysql sql


【解决方案1】:

例如,您使用不同类型的引号字符

`online` int(20) NOT NULL default ‘0', 
         here --------------------^

每次使用都换成普通的

CREATE TABLE IF NOT EXISTS `users`
(
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL,
  `password` varchar(32) NOT NULL,
  `online` int(20) NOT NULL default '0',
  `email` varchar(100) NOT NULL,
  `active` int(1) NOT NULL default '0',
  `rtime` int(20) NOT NULL default '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

但由于这些列的类型是 int,因此您根本不需要在默认值周围加上引号。

【讨论】:

  • 这些列是整数,因此根本不需要引号。
【解决方案2】:

对于所有 Int 数据类型,只需从 0 中删除 '' 引号。

CREATE TABLE IF NOT EXISTS users ( id int(11) NOT NULL auto_increment, username varchar(32) NOT NULL, password varchar(32) NOT NULL, online int(20) NOT NULL default 0, email varchar(100) NOT NULL, active int(1) NOT NULL default 0, rtime int(20) NOT NULL default 0, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

【讨论】:

    【解决方案3】:

    您将' 一起使用不同类型的引号

    替换这个:

    CREATE TABLE IF NOT EXISTS `users`
    (
      `id` int(11) NOT NULL auto_increment,
      `username` varchar(32) NOT NULL,
      `password` varchar(32) NOT NULL,
      `online` int(20) NOT NULL default ‘0',
      `email` varchar(100) NOT NULL,
      `active` int(1) NOT NULL default ‘0',
      `rtime` int(20) NOT NULL default ‘0',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 
    
    INSERT INTO `users` (`id`, `username`, `password`, `online`, `email`, `active`, `rtime`) 
    VALUES (1, ‘testing’, ‘testing’, 0, ‘fake@noemail.co.uk’, 0, 0);
    

    有了这个:

    CREATE TABLE IF NOT EXISTS `users`
    (
      `id` int(11) NOT NULL auto_increment,
      `username` varchar(32) NOT NULL,
      `password` varchar(32) NOT NULL,
      `online` int(20) NOT NULL default '0',
      `email` varchar(100) NOT NULL,
      `active` int(1) NOT NULL default '0',
      `rtime` int(20) NOT NULL default '0',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    
    
    INSERT INTO `users` (`id`, `username`, `password`, `online`, `email`, `active`, `rtime`) 
    VALUES (1, 'testing', 'testing', 0, 'fake@noemail.co.uk', 0, 0); 
    

    【讨论】:

      【解决方案4】:

      试试这个:

      CREATE TABLE `users` (
        `id` int(11) NOT NULL,
        `username` varchar(32) NOT NULL,
        `password` varchar(32) NOT NULL,
        `online` int(20) NOT NULL DEFAULT '0',
        `email` varchar(100) NOT NULL,
        `active` int(1) NOT NULL DEFAULT '0',
        `rtime` int(20) NOT NULL DEFAULT '0',
        PRIMARY KEY (`id`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
      

      还有:

      INSERT INTO users (id, username, password, online, email, active, rtime) VALUES (1, 'testing', 'testing', 0, 'fake@noemail.co.uk', 0, 0);
      

      【讨论】:

        【解决方案5】:

        Sql Executed

        请先正确选择数据库:

        在 SQL 编辑器中复制下面给定的 SQL 并执行它。 希望这可以解决您的问题。谢谢。

        CREATE TABLE IF NOT EXISTS `users`
        (
          `id` int(11) NOT NULL auto_increment,
          `username` varchar(32) NOT NULL,
          `password` varchar(32) NOT NULL,
          `online` int(20) NOT NULL default '0',
          `email` varchar(100) NOT NULL,
          `active` int(1) NOT NULL default '0',
          `rtime` int(20) NOT NULL default '0',
          PRIMARY KEY (`id`)
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 
        
        INSERT INTO `users` (`id`, `username`, `password`, `online`, `email`, `active`, `rtime`) 
        VALUES (1, 'testing', 'testing', 0, 'fake@noemail.co.uk', 0, 0);
        

        【讨论】:

          【解决方案6】:
          • 默认值零不需要任何引号

          • 您需要在 INSERT 查询中替换单引号 ' 而不是 引号。

          工作代码将是

          CREATE TABLE IF NOT EXISTS `users` (
            `id`       int(11)      NOT NULL auto_increment,
            `username` varchar(32)  NOT NULL, 
            `password` varchar(32)  NOT NULL, 
            `online`   int(20)      NOT NULL default 0, -- here
            `email`    varchar(100) NOT NULL, 
            `active`   int(1)       NOT NULL default 0, -- here
            `rtime`    int(20)      NOT NULL default 0, -- here
            PRIMARY KEY (`id`) 
          ) ENGINE = MyISAM DEFAULT CHARSET=utf8; 
          
          INSERT INTO `users` (`id`, `username`, `password`, `online`, `email`, `active`, `rtime`) 
          VALUES (1, 'testing', 'testing', 0, 'fake@noemail.co.uk', 0, 0); -- here
          

          SQL 小提琴演示:http://sqlfiddle.com/#!9/286728/1

          【讨论】:

            猜你喜欢
            • 2011-12-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多