Laravel5.5執行表遷移命令出現表為空的解決方案

Corwien發表於2018-07-06

今天在使用一個第三方包 laravel-admin 時,出現了這樣的錯誤:SQLSTATE[42000]: Syntax error or access violation: 1103 Incorrect table name ``,折騰了好久,終於知道了解決方法,原來是配置檔案的快取沒有清理。

一、問題

vagrant@homestead:~/Code/laravel-shop$ php artisan admin:install

錯誤提示:

In Connection.php line 664:

  SQLSTATE[42000]: Syntax error or access violation: 1103 Incorrect table name `` (SQL: create table `` (`id` int uns
  igned not null auto_increment primary key, `username` varchar(190) not null, `password` varchar(60) not null, `name
  ` varchar(255) not null, `avatar` varchar(255) null, `remember_token` varchar(100) null, `created_at` timestamp nul
  l, `updated_at` timestamp null) default character set utf8mb4 collate utf8mb4_unicode_ci)


In Connection.php line 452:

  SQLSTATE[42000]: Syntax error or access violation: 1103 Incorrect table name ``

二、解決方案

database/migrations/2016_01_04_173148_create_admin_table.php

<?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;

class CreateAdminTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        $connection = config(`admin.database.connection`) ?: config(`database.default`);

       // dd(app(`config`));
        Schema::connection($connection)->create(config(`admin.database.users_table`), function (Blueprint $table) {
            $table->increments(`id`);
            $table->string(`username`, 190)->unique();
            $table->string(`password`, 60);
            $table->string(`name`);
            $table->string(`avatar`)->nullable();
            $table->string(`remember_token`, 100)->nullable();
            $table->timestamps();
        });

        Schema::connection($connection)->create(config(`admin.database.roles_table`), function (Blueprint $table) {
            $table->increments(`id`);
            $table->string(`name`, 50)->unique();
            $table->string(`slug`, 50);
            $table->timestamps();
        });

        Schema::connection($connection)->create(config(`admin.database.permissions_table`), function (Blueprint $table) {
            $table->increments(`id`);
            $table->string(`name`, 50)->unique();
            $table->string(`slug`, 50);
            $table->string(`http_method`)->nullable();
            $table->text(`http_path`)->nullable();
            $table->timestamps();
        });

        Schema::connection($connection)->create(config(`admin.database.menu_table`), function (Blueprint $table) {
            $table->increments(`id`);
            $table->integer(`parent_id`)->default(0);
            $table->integer(`order`)->default(0);
            $table->string(`title`, 50);
            $table->string(`icon`, 50);
            $table->string(`uri`, 50)->nullable();

            $table->timestamps();
        });

        Schema::connection($connection)->create(config(`admin.database.role_users_table`), function (Blueprint $table) {
            $table->integer(`role_id`);
            $table->integer(`user_id`);
            $table->index([`role_id`, `user_id`]);
            $table->timestamps();
        });

        Schema::connection($connection)->create(config(`admin.database.role_permissions_table`), function (Blueprint $table) {
            $table->integer(`role_id`);
            $table->integer(`permission_id`);
            $table->index([`role_id`, `permission_id`]);
            $table->timestamps();
        });

        Schema::connection($connection)->create(config(`admin.database.user_permissions_table`), function (Blueprint $table) {
            $table->integer(`user_id`);
            $table->integer(`permission_id`);
            $table->index([`user_id`, `permission_id`]);
            $table->timestamps();
        });

        Schema::connection($connection)->create(config(`admin.database.role_menu_table`), function (Blueprint $table) {
            $table->integer(`role_id`);
            $table->integer(`menu_id`);
            $table->index([`role_id`, `menu_id`]);
            $table->timestamps();
        });

        Schema::connection($connection)->create(config(`admin.database.operation_log_table`), function (Blueprint $table) {
            $table->increments(`id`);
            $table->integer(`user_id`);
            $table->string(`path`);
            $table->string(`method`, 10);
            $table->string(`ip`, 15);
            $table->text(`input`);
            $table->index(`user_id`);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        $connection = config(`admin.database.connection`) ?: config(`database.default`);

        Schema::connection($connection)->dropIfExists(config(`admin.database.users_table`));
        Schema::connection($connection)->dropIfExists(config(`admin.database.roles_table`));
        Schema::connection($connection)->dropIfExists(config(`admin.database.permissions_table`));
        Schema::connection($connection)->dropIfExists(config(`admin.database.menu_table`));
        Schema::connection($connection)->dropIfExists(config(`admin.database.user_permissions_table`));
        Schema::connection($connection)->dropIfExists(config(`admin.database.role_users_table`));
        Schema::connection($connection)->dropIfExists(config(`admin.database.role_permissions_table`));
        Schema::connection($connection)->dropIfExists(config(`admin.database.role_menu_table`));
        Schema::connection($connection)->dropIfExists(config(`admin.database.operation_log_table`));
    }
}

清除配置檔案快取

vagrant@homestead:~/Code/laravel-shop$ php artisan config:cache

再次執行釋出命令,就可以了:

vagrant@homestead:~/Code/laravel-shop$ php artisan admin:install
Migrating: 2016_01_04_173148_create_admin_table
Migrated:  2016_01_04_173148_create_admin_table
Admin directory was created: /app/Admin
HomeController file was created: /app/Admin/Controllers/HomeController.php
ExampleController file was created: /app/Admin/Controllers/ExampleController.php
Bootstrap file was created: /app/Admin/bootstrap.php
Routes file was created: /app/Admin/routes.php
vagrant@homestead:~/Code/laravel-shop$

相關文章