SQLSTATE [42S02]: Базовая таблица или представление не найдено: таблица 1146 ‘blog.posts’ не существует

#laravel #warnings #laravel-5.8

#laravel #предупреждения #laravel-5.8

Вопрос:

[Заголовок][1] ##Laravel 5.8

Это веб-журнал с Laravel

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

SQLSTATE [42S02]: Базовая таблица или представление не найдено: 1146 таблица ‘blog.posts’ не существует (SQL: вставить в `posts` (`title`, `content`, `updated_at`, `created_at`) значения (asdasdasdas, это сообщение в блоге поможет вам правильно использовать laravel, 2019-04-08 14:54:16, 2019-04-08 14:54:16))

config/database.php

     'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ];
  

2019_04_01_135051_create_posts_table

 public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();
        $table->string('title');
        $table->text('content');
    });
}
  

2019_04_01_134543_create_likes_table

  public function up()
{
    Schema::create('likes', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();
    });
}
  

2019_04_01_134543_create_tags_table

   public function up()
{
    Schema::create('tags', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();
        $table->string('name');
    });
}
  

эта строка находится в классе Post :

  protected $fillable = ['title', 'content'];
  

эта строка находится в postControoler.php

   public function postAdminCreate(Store $session, Request $request)
{
    $this->validate($request, [
        'title' => 'required|min:5',
        'content' => 'required|min:10'
    ]);
    $post = new Post([
        'title' => $request->input('title'),
        'content' => $request->input('content')
    ]);
    $post->save();

    return redirect()->route('admin.index')->with('info', 'Post created, Title is: ' . $request->input('title'));
}
  

2014_10_12_000000_create_users_table

 <?php

use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

class CreateUsersTable extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('title');
        $table->string('content');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('users');
}
}
  

this is the post.blade.php in blog folder

 @extends('layouts.master')

@section('content')
<div class="row">
    <div class="col-md-12">
        <p class="quote">{{ $post['title']  }}</p>
    </div>
</div>
<div class="row">
    <div class="col-md-12">
        <p>{{ $post['content'] }}</p>
    </div>
</div>
@endsection
  

Сначала я запускаю

 php artisan migrate
  

cmd сообщает :

  Migrating: 2014_10_12_000000_create_users_table

    IlluminateDatabaseQueryException  : SQLSTATE[42S01]: Base table or view 
    already exists: 1050 Table 'users' already exists (SQL: create table `users` 
    (`id` bigint unsigned not null auto_increment primary key, `title` 
    varchar(255) not null, `content` varchar(255) not null, `email` varchar(255) 
    not null, `email_verified_at` timestamp null, `password` varchar(255) not 
    null, `remember_token` varchar(100) null, `created_at` timestamp null, `updated_at` timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

  at C:xampphtdocsgetting-startedvendorlaravelframeworksrcIlluminateDatabaseConnection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists")
      C:xampphtdocsgetting-startedvendorlaravelframeworksrcIlluminateDatabaseConnection.php:458

  2   PDOStatement::execute()
      C:xampphtdocsgetting-startedvendorlaravelframeworksrcIlluminateDatabaseConnection.php:458
  

Когда я создаю сообщение и нажимаю отправить, появляется предупреждение

Как я могу это исправить?

SQLSTATE[42S02]: Базовая таблица или представление не найдено: 1146 таблица ‘blog.posts’ не существует (SQL: вставить в `posts` (`title`, `content`, `updated_at`, `created_at`) значения (asdasdasdas, это сообщение в блоге поможет вам правильно использовать laravel, 2019-04-08 14:54:16, 2019-04-08 14:54:16)) желтый»> SQLSTATE[42S02]: Базовая таблица или представление не найдено: 1146 таблица ‘blog.posts’ не существует (SQL: вставить в `posts` (`title`, `content`, `updated_at`, `created_at`) значения (asdasdasdas, это сообщение в блоге поможет вам правильно использовать laravel, 2019-04-08 14:54:16, 2019-04-08 14:54:16))

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

1. Не решение, но попробуйте добавить это в свою модель post protected $table = 'posts';

2. Вы запускали php artisan migrate ?

3. да, я запускаю php artisna migrate

4. попробуйте php artisan migrate:fresh

Ответ №1:

используйте php artisan migrate:fresh команду для переноса таблицы в базу данных заново

Ответ №2:

ServiceProvider.php

 public function boot()
{
    Schema::defaultStringLength(191);
    if (Schema::hasTable('blogs')) {
        $blog = Blog::first();
        View::share('blog',$blog);
    }
}
  

Ответ №3:

Вы можете выполнить эти шаги :

  1. Удалите всю таблицу из вашего database .
  2. запустите php artisan migrate еще раз.
  3. Контрольная posts таблица создана в database

А теперь попробуйте.