SQLSTATE[23000]: нарушение ограничения целостности: ограничение 4025

#mysql #laravel #laravel-8

#mysql #laravel #laravel-8

Вопрос:

Привет, у меня проблема, когда я вставляю свои данные из laravel в MySQL с ошибкой SQLSTATE [23000]: нарушение ограничения целостности: ограничение 4025

Вот контроллер хранилища

 public function store(Request $request)
{
    // $faker = Faker::create('id_ID');
    $image = $request->file('Product_photo');
    $extension = $image->getClientOriginalExtension();
    $name = $request->Name;
    $file_name = $name.'.'.$extension;
    $image->move("images/listcar/", $file_name);
    DB::table('car')
    ->insert([
        //'id' => $faker->unique()->numberBetween($min = 0, $max = 200),
        'product_photo' => $file_name,
        'name' => $request->Name,
        'production_year' => $request->Production_year,
        'price' => $request->Price,
        'merk' => $request->Merk,
        'description' => $request->Description,
        'varian' => $request->Variant,
        'machine' =>$request->Machine,
        'transmision' => $request->Transmision,
        'wheel' => $request->Wheel,
    ]);
    return redirect('/admin');
 

Вот мой блейд

 <body>
<h1>Tambah Mobil</h1>
<div class="container">
    <form action="/car/add" method="post" enctype="multipart/form-data">
    {{ csrf_field() }}
    <th>Nama</th><br>
        <input type="text" name="Name" value=""><br/><br>
    <th>Tahun Produksi</th><br>
        <input type="text" name="Production_year" value=""><br/><br>
    <th>Harga</th><br>
        <input type="number" name="Price" value=""><br/><br>
    <th>Select Product Image</th><br>
        <input type="file" name="Product_photo" /><br/><br>
    <th>Merek</th><br>
        <input type="text" name="Merk" value=""><br/><br>
    <th>Deskripsi</th><br>
        <input type="textarea" name="Description" value=""><br/><br>
    <th>Varian</th><br>
        <input type="text" name="Variant" value=""><br/><br>
    <th>Mesin</th><br>
        <input type="text" name="Machine" value=""><br/><br>
    <th>Transmisi</th><br>
        <input type="text" name="Transmision" value=""><br/><br>
    <th>Penggerak Roda</th><br>
        <input type="text" name="Wheel" value=""><br/><br>
    <br>
        <input class="btn btn-primary" type="submit" value="Tambah Data Mobil">
    </form>
    <br>
    <br>
</div>
 

Структура MySQL
введите описание изображения здесь

Я действительно не знаю, где я ошибся, поэтому, пожалуйста, скажите мне, есть ли неправильные концепции

Комментарии:

1. Вы не устанавливаете первичный ключ вручную, база данных назначит его при вставке записи. Удалите это 'id' => $faker->unique()->numberBetween($min = 0, $max = 200),

2. @vandettadyckies Вам нужно установить id как auto increment , а затем нет необходимости устанавливать его через Faker .

3. Сообщение об ошибке предоставляет полное сообщение об ошибке, не удаляйте его.

4. хорошо, я уже обновил его, теперь я использую автоматическое увеличение, но та же ошибка все еще происходит

5. Попробуйте очистить таблицу и начать с нуля, так как ваш столбец «id» испорчен. Теперь все будет божьим, так как вы добавили свойство автоматического увеличения

Ответ №1:

Измените параметры сортировки в таблице mysql — utf8mb4_general_ci : )

Комментарии:

1. Это один из хороших ответов

Ответ №2:

Проверьте свою модель $fillable массива. Убедитесь, что все столбцы, в которые будут вставлены записи, являются частью вашего $fillable

Ответ №3:

у меня была такая же проблема и решена:

если вы сохраните не-json в поле JSON, эта ошибка произошла следующим образом:

     $item = new WhatsAppWebhook($data);
    $item->save();
    return $item;
 

вам необходимо закодировать

     $payload = array("payload"=>json_encode($data));
    $item = new WhatsAppWebhook($payload);
    $item->save();
    return $item;