Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Привет при попытки оставить комментарий на сайте выдают такую ошибку
Illuminate \ Database \ QueryException (HY000)
SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value (SQL: insert into `comments` (`name`, `text`, `post_id`, `updated_at`, `created_at`) values (Тест, Привет, 1, 2019-04-22 12:08:26, 2019-04-22 12:08:26))
Previous exceptionsSQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value (HY000)
"SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value (SQL: insert into `comments` (`name`, `text`, `post_id`, `updated_at`, `created_at`) values (Тест, Привет, 1, 2019-04-22 12:08:26, 2019-04-22 12:08:26)) ◀
Вот модель коментария
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
protected $fillable = ['id', 'name', 'text', 'post_id', 'status'];
public function post()
{
return $this->belongsTo('App\Post');
}
}
Вот код контролера
public function comment(Request $request)
{
$this->validate($request,[
'name' => 'required',
'text' => 'required',
]);
Comment::create([
'name' => $request->name,
'text' => $request->text,
'post_id' => $request->post_id,
]);
return redirect()->back()->with('status', 'Комментарий добавлен');
}
Не в сети
id по каким-то причинам не автоинкрементное. покажи структуру таблицы как "create table...".
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCommentsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->text('text');
$table->integer('post_id');
$table->integer('status')->default(1);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('comments');
}
}
Не в сети
покажи структуру таблицы как "create table...".
Schema::create('comments', function (Blueprint $table) {
)))))))))))))))))))
чото ржу. я попросил настоящую структуру таблицы, определение DDL SQL, которое можно добыть например в phpmyadmin или mysqldump. выглядит как
CREATE TABLE comments (
id int(11) NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (id));
то, что ты показал, оно по идее должно создавать автоинкерементный ключ, но ошибка говорит о том, что что-то пошло не так — надо проверить.
Изменено artoodetoo (22.04.2019 18:05:46)
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Не в сети
Мне нечего добавить, всё уже сказано.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Мне нечего добавить, всё уже сказано.
а как исправить можно ? на локльки работало все нормально
Не в сети
Можно попробовать откатить и снова накатить миграцию
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Можно попробовать откатить и снова накатить миграцию
А как правильно откат сделать правильно что бы все не удалилось
Не в сети
Универсального способа нет. Бекап по-любому надо сделать, а потом наверное восстанавить чего жалко. Но восстановить данные, а не структуру! Структура должна создаться миграцией. Её нельзя снова уничтожить.
Как правило бекап состоит из ddl т.е. drop table + create table
за которыми идёт dml, т.е. insert.
Надо строки с dml только выполнить.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Короче, требуется определённый опыт, которого у вас нет, судя по всему. Договоритесь с кем-нибудь, не со мной
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Короче, требуется определённый опыт, которого у вас нет, судя по всему. Договоритесь с кем-нибудь, не со мной
На локльном серваке работает все нормально
Не в сети
Перезалил БД выдало такую ошибку
http://prntscr.com/ngmg8k
Не в сети
Решил проблему зашел в БД, там в таблице comment id я поставил автоинкримент
Не в сети
Во всех таблица не работает id
Не в сети
Как вы вообще создаёте эти таблицы? Если всё делается руками, то вините руки.
Есть два "нормальных" способа:
1. запускать миграции. где бы вы это ни делали, на локальном ли, на хостинге ли — будет одинаковый результат. И автоинкремент будет и длина ключа нормальная, т.к. она зависит от чарсета, а он в конфиге прописан.
2. сделать базу локально из миграции, заполнить данными, перенести на хостинг через создание дампа/восстановление из дампа. опять получаем точную копию. здесь нет возможности для ошибки!!!!!!!!!!!
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Страницы 1