سلام دوستان. موقع ساختن 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')
خب درسته شما نمی تونید چنتا فیلد AutoIncrement داشته باشید بدلیل اینکه اونها رو بعنوان Primary Key در نظر میگیره.
توصیه من اینه که می تونید توی مدل خودتون برای فیلدهای دیگه Auto Increment رو شبیه سازی کنید که راحته
ولی باز هم اگر اصرار دارید که چنتا فیلد به عنوان Primary Key همزمان باشند و در این حال Auto Increment هم باشند باید به جای انجین InnoDB در MySql از انجین MyISAM استفاده کنید که بصورت فرمول زیر عمل میکنه
MAX(auto_increment_column) + 1 WHERE prefix=given-prefix
@viva.mohammadi
راستش درست متوجه نشدم باید چطور از این استفاده کنم. یعنی باید اول ستون هایی که قراره increment بشن رو مشخص کنم؟ چطوری اون وقت؟
نمیتونم برای همین جدولی که نوشتم به صورت دستی توی دیتابیس وارد کنم؟
این دو ستون ها را
$table->increments('user_logged');
$table->increments('user_hero');
به
$table->integer('user_logged');
$table->integer('user_hero');
تغییر بده
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟