2015-05-19 18 views
6

Tôi đã cố gắng để tạo ra một bảng có một như giá trị số nguyên mặc định của nó Mã này trông giống như:Laravel 5 Migration, giá trị mặc định không hợp lệ khi số nguyên

Schema::create('gsd_proyecto', function($table) { 
     $table->increments('id'); 
     $table->string('nombre', 80)->unique(); 
     $table->string('descripcion', 250)->nullable(); 
     $table->date('fechaInicio')->nullable(); 
     $table->date('fechaFin')->nullable(); 
     $table->integer('estado', 1)->default(0); 
     $table->string('ultimoModifico', 35)->nullable(); 
     $table->timestamps(); 
    }); 

Nhưng khi tôi chạy di cư Tôi m nhận được lỗi sau:

Next exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'estado' 

tôi kiểm tra SQL tạo ra bởi laravel là gì và tôi thấy tiếp theo

create table `gsd_proyecto` (
`id` int unsigned not null auto_increment primary key, 
`nombre` varchar(80) not null, 
`descripcion` varchar(250) null, 
`fechaInicio` date null, 
`fechaFin` date null, 
`estado` int not null default '0' auto_increment primary key, 
`ultimoModifico` varchar(35) null, 
`created_at` timestamp default 0 not null, 
`updated_at` timestamp default 0 not null 
) 

Như bạn thấy, laravel đang cố gắng để thiết lập các lĩnh vực estado với một giá trị char ('0') và cũng là một autoincrement tiểu học then chốt

Bất kỳ trợ giúp sẽ được thực sự đánh giá cao

Trả lời

12

Loại bỏ tham số thứ hai trong phương thức integer. Nó đặt cột làm tăng tự động. Kiểm tra API Laravel để biết thêm các detials.

http://laravel.com/api/5.0/Illuminate/Database/Schema/Blueprint.html#method_integer

$table->integer('estado')->default(0); 
+2

Nó làm việc! Cảm ơn rất nhiều! Tôi đã suy nghĩ trong một định nghĩa như MySql không .... thay vào đó tôi đang sử dụng tinyInteger bây giờ và nó đang làm việc ngay bây giờ. Cảm ơn rất nhiều! – WindSaber

Các vấn đề liên quan