【发布时间】: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 服务器