今天在使用一個第三方包 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$