2013-10-09 32 views
0

由於我使用了模型的Find()函數,因此我確信模型中的set主鍵正在工作,它依賴於設置的主鍵和它提供了正確的數據。創建模型的新實例時出錯,但在使用Model :: Find()時正常

$new = new Book(); 
$new->title = 'pogi'; 
$new->save(); 

它生成此錯誤:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'PRIMARY' (SQL: insert into `books` (`title`, `updated_at`, `created_at`) values (?, ?, ?)) (Bindings: array (0 => 'pogi', 1 => '2013-10-09 02:18:53', 2 => '2013-10-09 02:18:53',)) 

型號:

class Book extends Eloquent { 

    protected $table = 'books'; 
    public $primaryKey = 'book_id'; 
} 

PS: 我不

問題創建一個新的像這樣的代碼時上升噸知道這是否會有所幫助,但我跑這個SQL代碼,改變的東西:

ALTER TABLE books 
CHANGE link ibooks_url varchar(255), 
ADD COLUMN kindle_url varchar(255), 
ADD COLUMN kobo_url varchar(255), 
ADD COLUMN ibooks_id varchar(255), 
CHANGE book_id kindle_id varchar(255), 
ADD COLUMN kobo_id varchar(255), 
ADD COLUMN ibooks_id varchar(255), 
CHANGE id book_id varchar(255); 
+1

這是你的主鍵? 「CHANGE id book_id varchar(255);」 –

+0

是的,先生,這也是自動增量 – Ironwind

回答

1
ALTER TABLE books MODIFY book_id INT NOT NULL; 
ALTER TABLE books DROP PRIMARY KEY; 
ALTER TABLE books MODIFY book_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT; 

的問題是,AUTO_INCREMENT仍設置爲 「id」 字段。

運行上面的sql代碼,將自動增量更改爲最新的主鍵「book_id」,當使用自動增量更改主鍵的名稱時,需要重置主鍵以便設置自動增量到您分配的新名稱。

+0

我測試了這個,它的工作原理!非常感謝!我稍後再接受 – Ironwind

相關問題