我不能运行 Laravel database,错误的信息一直重复

首先,以下我的错误信息:
1)SQLSTATE[42S02]: Base table or view not found: 1146 Table 'forge.settings' doesn't exist (SQL: select * fromsettingswhereauto_load_disabledis null)
2)SQLSTATE[42S02]: Base table or view not found: 1146 Table 'forge.settings' doesn't exist

不管是任何的command我都试过了:
php artisan serve, php artisan migrate,
php artisan migrate:fresh它都会显示以上的1)和 2)的错误信息。 以下是我的代码:
在.env file

APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=forge
DB_USERNAME=root
DB_PASSWORD=

没有APP_KEY 因为连`php artisan key:generate
它也显示1)2)的错误。
在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' => '',
'strict' => true,
'modes' => [
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_AUTO_CREATE_USER',
'NO_ENGINE_SUBSTITUTION'
 ],
'engine' => 'InnoDB',
],`

我用的是xampp server, 我已经在上面创建了‘forge’的database。
我的migration file: create_settings_table:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateSettingsTable extends Migration
{
    public function up()
    {
        Schema::create('settings', function (Blueprint $table) {
            $table->increments('id');
            $table->string('option_key');
            $table->longText('option_value')->nullable();
            $table->boolean('auto_load_disabled')->nullable();
        });
    }
    public function down()
    {
        Schema::dropIfExists('settings');
    }
}

想请教各位朋友还有其他办法或者提示吗?

·JC·
jc_0131
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

这种情况,可以考虑检查所有的 服务提供者 (即以 ServiceProvider 结尾的或继承 Illuminate\Support\ServiceProvider 的文件类,先从 app 的到 vendor 的检查顺序)。极有可能是在服务提供的 register 方法(即注册阶段)有数据库的调用。

如果必须要有数据库的调用,请 捕获异常 (try catch)并给出在没有库表时的处理方式。以下是位于 AppServiceProvider 的一个示例

<?php

class AppServiceProvider extends ServiceProvider
{
   public function register() {
    $this->app->bind(Foo::class, function () {
            try {
                $setting = Setting::find(1);
            } catch (\Exception $e) {
                $setting = []
            }

            return new Foo($setting);
        });
  }
}
4年前 评论
jc_0131 (楼主) 4年前
讨论数量: 6

没有 APP_KEY 因为连 `php artisan key:generate 它也显示 1)2)的错误。

建议重新安装下框架,然后一步一步执行,一步一步试错

还有,为什么你的 .env DB_PASSWORD= 是空的,难道你的数据库没有密码?加个密码试试?

4年前 评论

就算是开发工作做了多年的大神都会为了环境问题而头痛,所以才有了homestead。 这个论坛的所有教程,文档都是基于homestead环境,你要学习的话,也请用它。

4年前 评论

通过数据库软件查看一下是否可以连接成功,数据库表是否存在?

4年前 评论

看报错应该是数据问题,可以切换到其他可用数据库(如果有的话)确认一下问题。

4年前 评论

这种情况,可以考虑检查所有的 服务提供者 (即以 ServiceProvider 结尾的或继承 Illuminate\Support\ServiceProvider 的文件类,先从 app 的到 vendor 的检查顺序)。极有可能是在服务提供的 register 方法(即注册阶段)有数据库的调用。

如果必须要有数据库的调用,请 捕获异常 (try catch)并给出在没有库表时的处理方式。以下是位于 AppServiceProvider 的一个示例

<?php

class AppServiceProvider extends ServiceProvider
{
   public function register() {
    $this->app->bind(Foo::class, function () {
            try {
                $setting = Setting::find(1);
            } catch (\Exception $e) {
                $setting = []
            }

            return new Foo($setting);
        });
  }
}
4年前 评论
jc_0131 (楼主) 4年前

数据库迁移命令执行了,但是成功了没有呢,最主要还是看下数据库表存不存在,写个文件,测试一下数据库连接。找到问题先。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!