2010-04-12 3 views
6

Khi tôi cố gắng để lưu dữ liệu vào mô hình học thuyết của tôi ném ngoại lệ này:thuyết Vấn đề: Không thể lấy chèn cuối cùng nhận dạng

Message: Couldn't get last insert identifier. 

mã thiết lập bảng của tôi là:

$this->hasColumn('id', 'integer', 4, array(
     'type' => 'integer', 
     'length' => 4, 
     'fixed' => false, 
     'unsigned' => false, 
     'primary' => true, 
     'autoincrement' => true, 
     )); 

Xin vui lòng giúp. Cảm ơn.

Trả lời

14

Kiểm tra để đảm bảo rằng các cột trong cơ sở dữ liệu của bạn được thiết lập là auto_increment. Có vẻ như lớp Doctrine đang xử lý nó như là một auto_increment nhưng nó không được thiết lập như vậy trong DB.

+2

Tôi ước tôi có thể nâng cao điều này nhiều lần. Bạn chỉ cần thực hiện một lỗi gnarly có sửa chữa 10 phút. –

1

này đã làm việc cho tôi:

$this->hasColumn('cd_fabricante', 'integer', 4, array(
      'type' => 'integer', 
      'length' => 4, 
      'unsigned' => true, 
      'primary' => true, 
      'auto_increment' => true, 
)); 

Đã các thông số tương tự như bạn ở trên, cùng một lỗi quá.

EDIT: Gần đây tôi tìm thấy về việc thêm "auto_increment" để định nghĩa cột PK và bây giờ tôi nó cư xử giống như bất kỳ trường ID được xử lý bởi Học thuyết với bất cứ tên tôi chọn

2

Đối với tôi, sự cố là thông số default.

 $this->hasColumn('inscription_id', 'integer', 4, array(
     'type' => 'integer', 
     'length' => 4, 
     'fixed' => false, 
     'unsigned' => false, 
     'primary' => true, 
//  'default' => '0', !!! get "couldn't get last inserted identifier doctrine" 
     'notnull' => true, 
     'autoincrement' => true, 
     ));