Как устранить неполадки AndonisJs, ошибка XAMMP MySQL

Я пытаюсь вставить значения в мой сервер XAMPP MySQL с помощью AdonisJs, но получаю следующую ошибку:

вставить в posts (body, created_at, title, updated_at) значения (ПО УМОЛЧАНИЮ, ‘2018-06-28 15:06:02’, ‘сообщение 4’, ‘это сообщение 4’, ‘2018-06-28 15:06:02’) — ER_WRONG_VALUE_COUNT_ON_ROW: количество столбцов не зависит ‘ t соответствует количеству значений в строке 1

Эта ошибка говорит мне о том, что я предоставляю 5 значений для таблицы, состоящей из 4 значений. На самом деле таблица ‘posts’ состоит из 5 значений:

идентификатор, заголовок, тело, создан_, обновлен_at

Я могу вручную ввести значения в id, title, body, используя phpMyAdmin, таблица будет обновлена, и мое приложение отразит изменение.

Единственная проблема, с которой я могу отследить это, по-видимому, связана с методом increments () в моем файле PostController.js. Разве он не делает свою работу правильно?

Как мне узнать, что здесь происходит?

Миграционный файл posts_schema.js:

'use strict'

const Schema = use('Schema')

class PostsSchema extends Schema {
up () {
this.create('posts', (table) => {
table.increments()
table.string('title')
table.string('body')
table.timestamps()
})
}

down () {
this.drop('posts')
}
}

module.exports = PostsSchema

Контроллер PostsController.js:

'use strict'

// Bring in model

const Post = use('App/Models/Post')

class PostController {
async index({ view }){
//  const posts = [
//    {title:'Post One', body:'This is post one'},
//  {title:'Post Two', body:'This is post one'},
// {title:'Post Three', body:'This is post one'}
// ]
const posts = await Post.all();

return view.render('posts.index', {
title: 'Latest Posts',
posts: posts.toJSON()
})
}

async details({ params, view}) {
const post = await Post.find(params.id)

return view.render('posts.details', {
post: post
})

}

async add({ view }) {
return view.render('posts.add')
}

async store({ request, response, session }) {
const post = new Post();

post.title = request.input('title')
post.body = request.input('body')

await post.save()

session.flash({ notification: 'Posted Success'})

return response.redirect('/posts')
}
}

module.exports = PostController

Представление add.edge:

@layout('main')

@section('content')
<a href="/posts">Go Back</a>
<hr>
<h1>Add Post</h1>
<form action="/posts" method="POST">
{{ csrfField() }}
<div class="form-group">
<label>Title</label>
<input type="text" name="title" class="form-control" placeholder="Title">
</div>
<div class="form-group">
<label>Body</label>
<textarea name="title" class="form-control" placeholder="Body"></textarea>
</div>
<button class="btn btn-primary" type="submit">Submit</button>
</form>

@endsection

Файл маршрутов route.js:

'use strict'

const Route = use('Route')



Route.on('/').render('home')

Route.get('/posts', 'PostController.index')

Route.get('/posts/add', 'PostController.add')

Route.get('/posts/:id', 'PostController.details')

Route.post('/posts', 'PostController.store')

Я очень мало сделал для настройки XAMPP. Мои изменения в config.inc.php были просто:

$cfg['Servers'][$i]['controluser'] = 'root';
$cfg['Servers'][$i]['controlpass'] = '123456';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '12345';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = true;

работал через этот код и учебник из:
Начало работы с AdonisJs
https://www.youtube.com/watch?v=SaXhwbuMTu4

0

Решение

<textarea name="title" class="form-control" placeholder="Body"></textarea>

Похоже, name атрибут должен быть body скорее, чем title,

0

Другие решения

Если это ваша текущая вставка:

insert into posts (body, created_at, title, updated_at) values (DEFAULT, '2018-06-28 15:06:02', 'post 4', 'this is post 4', '2018-06-28 15:06:02')

Так должно быть:

insert into posts (body, created_at, title, updated_at) values ('this is post 4', '2018-06-28 15:06:02', 'post 4', '2018-06-28 15:06:02')
0