添加表时出现MySql错误

时间:2014-08-27 02:11:23

标签: mysql sql

这是我正在尝试执行的SQL查询,但它失败并出现此错误:

  

您的SQL语法有错误;查看与MySQL服务器版本对应的手册   要在'NOT NULL附近使用正确的语法,    passhash VARCHAR NOT NULL,    第3行的permission TINYINT NOT NULL DEFAULT':

这是查询:

DROP TABLE IF EXISTS `Maestros`;

CREATE TABLE `Maestros` (
  `id` INTEGER NOT NULL AUTO_INCREMENT,
  `nombre` VARCHAR NOT NULL,
  `passhash` VARCHAR NOT NULL,
  `permission` TINYINT NOT NULL DEFAULT 0,
  `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `activo` TINYINT NOT NULL DEFAULT 1,
  PRIMARY KEY (`id`),
KEY (`passhash`)
) COMMENT 'Tabla que contiene la informacion de los maestros';

2 个答案:

答案 0 :(得分:1)

varchar应该有一个与之关联的长度,并且只有一个TimeStamp具有默认值:

CREATE TABLE `Maestros` (
  `id` INTEGER NOT NULL AUTO_INCREMENT,
  `nombre` VARCHAR(255) NOT NULL,
  `passhash` VARCHAR(255) NOT NULL,
  `permission` TINYINT NOT NULL DEFAULT 0,
  `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `modified` TIMESTAMP,
  `activo` TINYINT NOT NULL DEFAULT 1,
  PRIMARY KEY (`id`),
KEY (`passhash`)
) COMMENT 'Tabla que contiene la informacion de los maestros';

Here是一个SQL小提琴。

答案 1 :(得分:0)

MySQL查询中的问题如下: - 每当指定varchar作为数据类型时,您需要定义列的最大大小,即varchar(50)而不是简单的varchar [其中50是列中允许的字符数] - 您不能在单个查询中使用'DEFAULT CURRENT_TIMESTAMP'约束用于多个列

修改后的查询如下......

DROP TABLE IF EXISTS `Maestros`;

CREATE TABLE `Maestros` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `nombre` VARCHAR(100) NOT NULL,
  `passhash` VARCHAR(100) NOT NULL,
  `permission` TINYINT NOT NULL DEFAULT 0,
  `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `modified` TIMESTAMP NOT NULL,
  `activo` TINYINT NOT NULL DEFAULT 1,
  PRIMARY KEY (`id`),
 KEY (`passhash`)
) COMMENT 'Tabla que contiene la informacion de los maestros';