这是我正在尝试执行的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';
答案 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';