执行查询时出现SQL错误

时间:2016-07-09 12:52:31

标签: mysql sql

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

  

预计结束报价。 (在510位置附近)

     

预计会有逗号或结束括号。 (靠近'',`email` varchar(100)NOT NULL,`active` int(1)NOT NULL默认'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); 

6 个答案:

答案 0 :(得分:2)

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

`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,因此您根本不需要围绕默认值的引号。

答案 1 :(得分:1)

对于所有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;

答案 2 :(得分:0)

  • 不需要围绕默认值零

  • 的任何引用
  • 您需要在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

答案 3 :(得分: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);

有了这个:

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 :(得分:0)

试试这个:

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 :(得分:0)

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);