آفلاین
user-avatar

ارور migration

2 سال پیش
توسط محمود خسروی آپدیت شد
آفلاین
user-avatar
MHT ( 1279 تجربه )
2 سال پیش

سلام دوستان. موقع ساختن table اروری میگیرم که ظاهرا بخاطر وجود چند تا المان از نوع increment هست. چطور میشه حلش کرد؟
"
public function up()
{
Schema::create('notifications', function (Blueprint $table) {
$table->increments('id');
$table->increments('user_logged');
$table->increments('user_hero');
$table->string('note')->nullable();
$table->timestamps();
});
}
"

این هم متن ارور:

Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1075 Incorrect table definition; there can be only one auto column and it must be defined as a key (SQL: create table notifications (id int unsigned not null auto_increment primary key, user_logged int unsigned null auto_increment primary key, user_hero int unsigned null auto_increment primary key, note varchar(191) null, created_at timestamp null, updated_at timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

آفلاین
user-avatar
vahid Mohammadi ( 37202 تجربه )
2 سال پیش

@maedehtoosi

خب درسته شما نمی تونید چنتا فیلد AutoIncrement داشته باشید بدلیل اینکه اونها رو بعنوان  Primary Key در نظر میگیره.
توصیه من اینه که می تونید توی مدل خودتون برای فیلدهای دیگه Auto Increment رو شبیه سازی کنید که راحته

ولی باز هم اگر اصرار دارید که چنتا فیلد به عنوان Primary Key همزمان باشند و در این حال Auto Increment هم باشند باید   به جای انجین InnoDB در MySql از انجین MyISAM استفاده کنید که بصورت فرمول زیر عمل میکنه

 MAX(auto_increment_column) + 1 WHERE prefix=given-prefix
آفلاین
user-avatar
MHT ( 1279 تجربه )
2 سال پیش

@viva.mohammadi
راستش درست متوجه نشدم باید چطور از این استفاده کنم. یعنی باید اول ستون هایی که قراره increment بشن رو مشخص کنم؟ چطوری اون وقت؟
نمیتونم برای همین جدولی که نوشتم به صورت دستی توی دیتابیس وارد کنم؟

آفلاین
user-avatar
محمود خسروی ( 17185 تجربه )
2 سال پیش
تخصص : طراح و برنامه نویس

این دو ستون ها را

$table->increments('user_logged');
$table->increments('user_hero');

به

$table->integer('user_logged');
$table->integer('user_hero');

تغییر بده

برای ارسال پاسخ باید وارد سایت شوید