جشنواره عیدانه راکت | عضویت ویژه راکت برای آخرین بار | افزایش قیمت‌ها از سال جدید | و ...

مشاهده اطلاعات بیشتر...
ثانیه
دقیقه
ساعت
روز
MHT
6 سال پیش توسط MHT مطرح شد
3 پاسخ

ارور migration

سلام دوستان. موقع ساختن 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')


ثبت پرسش جدید
vahid Mohammadi
@viva.mohammadi 6 سال پیش آپدیت شد
0

@maedehtoosi

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

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

 MAX(auto_increment_column) + 1 WHERE prefix=given-prefix

MHT
@mahiHT 6 سال پیش مطرح شد
0

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


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 6 سال پیش مطرح شد
0

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

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

به

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

تغییر بده


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام