【问题标题】:Laravel SQLSTATE[HY000] [1049] Unknown database - nothing seems to workLaravel SQLSTATE[HY000] [1049] 未知数据库 - 似乎没有任何效果
【发布时间】:2021-03-12 15:16:29
【问题描述】:

当我尝试使用 php artisan migrate:install/migrate 进行迁移时,出现 Laravel SQLSTATE[HY000] [1049] 未知数据库错误。我在我的本地主机 SQL 服务器上正确命名了数据库。我正在使用 XAMPP 运行它。

这是我的 .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3307
DB_DATABASE=todo
DB_USERNAME=root
DB_PASSWORD=root

这里是database.php:

'default' => env('DB_CONNECTION', 'mysql'),
'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            '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'),
            ]) : [],
        ],

这里还有 create_todo_table.php 文件:

<?php

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

class CreateTodoTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('todo', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
            $table->string('yettodo');
            $table->string('done');
            $table->string('user');
        });
    }

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

但我不断得到这个:

C:\Users\gracj\todo\todo\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70
      PDOException::("SQLSTATE[HY000] [1049] Unknown database 'todo'")

我完全知道互联网上有很多这样的话题。情况是我觉得我已经尝试了我能找到的所有东西(包括安装不同的 MySQL 版本——现在我在 5.7 上,之前我在 8.0 上)。我感到绝望。

我不得不将 DB_PORT 更改为 3307,因为我遇到了“3306 被占用”错误。我在 Laravel 8 和 PHP 8.0.2 上。

请帮忙!

【问题讨论】:

  • 你创建了名为“todo”的数据库吗?
  • 这不是连接问题,您只是没有在 .env 中定义的名为“todo”的数据库
  • "我在本地 SQL 服务器上正确命名了数据库。"您如何验证这一点?
  • "我不得不将 DB_PORT 更改为 3307,因为我遇到了“3306 被占用”错误" 这可能意味着在端口 3306 上运行了另一个 MySQL 服务器。您是否创建了数据库在正确的端口 3307 上?!
  • "我在本地 SQL 服务器上正确命名了数据库。" (抱歉引用同样的话)只是为了确认一下,当您说 SQL 服务器时,您的意思是 MySQL 数据库服务器,而不是 MS SQL 服务器

标签: php mysql laravel


【解决方案1】:

好的,已修复 - 非常违反直觉。这就是我所做的。

我在我的服务器上删除并创建了几次 todo 数据库,之后每次都是“php artisan config:clear”。我之前确实尝试过,但是,我将 .env 文件中的 DB_PORT 改回了 3306,即使 XAMPP 说它很忙,所以在 XAMPP 中我不得不将其更改为 3307(下图)。如您所见,这些不一样!你能解释一下吗?我很担心,因为它可能只工作一次,并且在几行代码或迁移之后,它有可能回来......

【讨论】:

    【解决方案2】:

    遇到了类似的问题。但是,在 myphpAdmin 上创建表后,我的问题就解决了。 尝试: 打开 XAMP->单击 MySQL 行中的 admin 并按照 DB_DATABASE=

    中的说明创建数据库

    尝试再次运行 php artisan migrate。

    【讨论】:

      【解决方案3】:

      首先设置你的 Laravel .env 文件

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

      如果是,则运行:

      php artisan config:clear
      

      【讨论】:

      • 如果他没有名为laravel 的数据库,则无法解决问题。另外他不能使用 3306 端口,因为他有多个数据库服务器在运行。
      猜你喜欢
      • 2020-02-08
      • 2020-10-21
      • 2016-02-14
      • 2014-07-29
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2021-08-10
      相关资源
      最近更新 更多