我正在关注Yii Blog tutorial,并在执行评论部分时遇到此错误。
CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: General error: 1364 Field 'post_id' doesn't have a default value. The SQL statement executed was: INSERT INTO `tbl_comment` (`status`, `content`, `author`, `email`, `url`, `create_time`) VALUES (:yp0, :yp1, :yp2, :yp3, :yp4, :yp5)
同样的错误首先是状态,但是我在数据库中为它设置了默认值。但这次是post_id,我不知道如何解决这个问题。帖子ID是另一张表中的FK。 Here是整个数据库设计。
谢谢!
答案 0 :(得分:2)
看起来您的“post_id”属性(可能是您的主键)未设置为“自动增量”或在数据库中设置为“非空”。看看下面的ORM。将其与您的产品进行比较并修复数据库错误。并且不要忘记通过升级您的模型。 GII!
-- -----------------------------------------------------
-- Table `mydb`.`tbl_comment`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`tbl_comment` ;
CREATE TABLE IF NOT EXISTS `mydb`.`tbl_comment` (
`post_id` INT NOT NULL,
`status` VARCHAR(45) NULL,
`content` TEXT NULL COMMENT ' ',
`author` VARCHAR(255) NULL,
`email` VARCHAR(255) NULL,
`url` VARCHAR(511) NULL,
`create_time` DATETIME NULL,
PRIMARY KEY (`post_id`))
ENGINE = InnoDB;
否则,如果“post_id”不是您的主键并且未设置为“自动增量”,您可以尝试将其修复:
解决方案1)在php中保存/更新之前设置“post_id”,如:
$model = new Tbl_comment; //hope this is your Yii model name...
$model->post_id = 123
if(!$model->save()) {
var_dump($model->errors);
}
解决方案2)在属性“post_id”上的数据库ORM中添加默认值。 (因为我不知道你的关系和ORM是对的。)
-----------------------------------------
-- Table `mydb`.`tbl_comment`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`tbl_comment` ;
CREATE TABLE IF NOT EXISTS `mydb`.`tbl_comment` (
`post_id` INT NULL DEFAULT someDefault,
`status` VARCHAR(45) NULL,
`content` TEXT NULL COMMENT ' ',
`author` VARCHAR(255) NULL,
`email` VARCHAR(255) NULL,
`url` VARCHAR(511) NULL,
`create_time` DATETIME NULL)
ENGINE = InnoDB;
表详情: