2014-09-01 152 views
1

我在關注Yii Blog tutorial,並且在執行註釋部分時出現此錯誤。CDbCommand無法執行SQL語句:SQLSTATE [HY000]:常規錯誤:1364

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

您還沒有設置在插入查詢的POST_ID值。你需要將它的值設置爲一個外鍵 – 2014-09-01 12:43:27

+0

這是,http://codepad.org/EO50vNeN – user1502 2014-09-01 12:54:22

回答

2

看起來像您的「post_id」屬性,這可能是您的主鍵,沒有設置爲「自動遞增」或在數據庫中設置爲「不爲空」。看看下面的ORM。與您的數據進行比較並修復您的DB側錯誤。別忘了通過升級你的模型。 GII!

enter image description here

-- ----------------------------------------------------- 
-- 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)製作「 POST_ID」設置之前保存/更新中,如PHP:

$model = new Tbl_comment; //hope this is your Yii model name... 
$model->post_id = 123 

if(!$model->save()) { 
    var_dump($model->errors); 
} 

解決方案2)在d添加默認值atabase ORM屬性「post_id」。 (因爲我不知道你們的關係和ORM的權利。)

enter image description here

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

表的細節:

enter image description here

+0

這裏是我的模式的ER,http://i.imgur.com/37H2B1j.png?1一次我爲post_id設置了默認值,我得到了'id'的異常。 CDbCommand無法執行SQL語句:SQLSTATE [HY000]:常規錯誤:1364字段'id'沒有默認值。執行的SQL語句是:INSERT INTO'tbl_comment'('status','post_id','content','author','email','url','create_time')VALUES(:yp0,:yp1,:yp2 ,:yp3,:yp4,:yp5,:yp6) – user1502 2014-09-02 13:11:53

+0

「id」字段來自哪裏?你說你的錯誤是關於'post_id'的。如果字段'id'也不是PK/NOTNULL/NODEFAULT,將字段'id'配置爲PK/NOTNULL/AUTO-INCREMENT ?!它與'post_id'使'id'作爲主鍵並且在其上放置了「自動增量」(工作臺中的字段AI)相同,好嗎? – lin 2014-09-02 13:28:08

+0

@ user1502,看看我現在添加的最新截圖。它向您展示瞭如何正確配置它。 – lin 2014-09-02 13:38:14

相關問題