mysql创建table时出错 ERROR 1067 (42000): Invalid default value for ' '
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql创建table时出错 ERROR 1067 (42000): Invalid default value for ' '相关的知识,希望对你有一定的参考价值。
mysql> create table AdminInfo
-> (
-> Aid int primary key,
-> Aname varchar(50) not null,
-> Apwd varchar(20) not null,
-> Alevel varchar(10) default '普通'
-> );
ERROR 1067 (42000): Invalid default value for 'Alevel'
这什么原因呢???该怎么解决!!!求大神帮忙!!!
-> (
-> Aid int primary key,
-> Aname varchar(50) not null,
-> Apwd varchar(20) not null,
-> Alevel varchar(10) default '普通'
-> );
Query OK, 0 rows affected (0.00 sec)
别复制,手工输入就不会有问题的
追问谢谢,可是是不是字符集的问题?设置成utf8后,就出现这个问题,改成gb2312或者GBK后就能成功了,但是后来显示在网页上是乱码!!该怎么办
?
(
Aid int primary key,
Aname varchar(50) not null,
Apwd varchar(20) not null,
Alevel varchar(10) default '普通'
)
> OK
> 时间: 0.119s
创建外键时出错:MySQL 错误 1215:无法添加外键约束 [重复]
【中文标题】创建外键时出错:MySQL 错误 1215:无法添加外键约束 [重复]【英文标题】:Error when creating foreign key: MySQL Error 1215: Cannot add foreign key constraint [duplicate] 【发布时间】:2019-01-31 20:39:12 【问题描述】:我目前正在为一家公司编写一个预订系统,他们也想要一个任务管理系统,但我遇到了一个让我发疯的错误。
Executing SQL script in server
ERROR: Error 1215: Cannot add foreign key constraint
SQL Code:
-- -----------------------------------------------------
-- Table `bvsv_system`.`task`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `bvsv_system`.`task` (
`idtask` INT(11) NOT NULL,
`attGora` VARCHAR(200) NULL,
`status` VARCHAR(45) NULL,
`to` VARCHAR(45) NULL,
`jobstatus_id` INT(11) NOT NULL,
`worker_personnummer` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idtask`, `jobstatus_id`, `worker_personnummer`),
INDEX `fk_task_jobstatus1_idx` (`jobstatus_id` ASC),
INDEX `fk_task_worker1_idx` (`worker_personnummer` ASC),
CONSTRAINT `fk_task_jobstatus1`
FOREIGN KEY (`jobstatus_id`)
REFERENCES `bvsv_system`.`jobstatus` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_task_worker1`
FOREIGN KEY (`worker_personnummer`)
REFERENCES `bvsv_system`.`worker` (`personnummer`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
SQL script execution finished: statements: 15 succeeded, 1 failed
当我尝试添加链接这两个表的外键时出现此错误
CREATE TABLE IF NOT EXISTS `bvsv_system`.`worker` (
`personnummer` VARCHAR(45) NOT NULL,
`fornamn` VARCHAR(45) NULL DEFAULT NULL,
`efternamn` VARCHAR(45) NULL DEFAULT NULL,
`extraanstalld` VARCHAR(45) NOT NULL,
PRIMARY KEY (`personnummer`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
和
CREATE TABLE IF NOT EXISTS `bvsv_system`.`task` (
`idtask` INT(11) NOT NULL,
`attGora` VARCHAR(200) NULL,
`status` VARCHAR(45) NULL,
`to` VARCHAR(45) NULL,
`jobstatus_id` INT(11) NOT NULL,
`worker_personnummer` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idtask`, `jobstatus_id`, `worker_personnummer`),
INDEX `fk_task_jobstatus1_idx` (`jobstatus_id` ASC),
INDEX `fk_task_worker1_idx` (`worker_personnummer` ASC),
CONSTRAINT `fk_task_jobstatus1`
FOREIGN KEY (`jobstatus_id`)
REFERENCES `bvsv_system`.`jobstatus` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_task_worker1`
FOREIGN KEY (`worker_personnummer`)
REFERENCES `bvsv_system`.`worker` (`personnummer`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
非常感谢我的程序员伙伴们的帮助! :)
【问题讨论】:
【参考方案1】:外键和主键需要有完全相同的定义。 worker
表定义了DEFAULT CHARACTER SET = latin1
。
我不确定您为什么要为不同的表设置不同的字符集。我建议只使用数据库默认值。
如果您确实需要它们,则使字符集兼容。您可以在列级别执行此操作:
CREATE TABLE IF NOT EXISTS `task` (
`idtask` INT(11) NOT NULL,
`attGora` VARCHAR(200) NULL,
`status` VARCHAR(45) NULL,
`to` VARCHAR(45) NULL,
`jobstatus_id` INT(11) NOT NULL,
`worker_personnummer` VARCHAR(45) CHARACTER SET latin1 NOT NULL,
PRIMARY KEY (`idtask`, `jobstatus_id`, `worker_personnummer`),
INDEX `fk_task_jobstatus1_idx` (`jobstatus_id` ASC),
INDEX `fk_task_worker1_idx` (`worker_personnummer` ASC),
CONSTRAINT `fk_task_worker1`
FOREIGN KEY (`worker_personnummer`)
REFERENCES `worker` (`personnummer`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
ENGINE = InnoDB
【讨论】:
以上是关于mysql创建table时出错 ERROR 1067 (42000): Invalid default value for ' '的主要内容,如果未能解决你的问题,请参考以下文章
解决MySQL复制出错 Last_SQL_Errno:1146
创建外键时出错:MySQL 错误 1215:无法添加外键约束 [重复]
使用 mysql 工作台创建 CHAR 类型的外键时出错:错误 1005:无法创建表(错误号:150)
请问MySQL中创建表哪里出错了? CREATE TABLE emp( empno INT(4) PRIMARY KEY, name VARCHAR(5) NOT NULL,
Mysql错误问题:ERROR 1005 (HY000): Can't create table 'crm_1.tbl_client' (errno: 150)