SQLSTATE[HY000] [1049] 未知数据库 'laravel'

7
我在尝试将一个对象保存到数据库时遇到了以下错误:
SQLSTATE[HY000] [1049] Unknown database 'laravel' (SQL: insert into cards (card_price, active, updated_at, created_at) values (0, 1, 2019-10-10 15:14:43, 2019-10-10 15:14:43))
同时请注意,代码中需要使用.env文件。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cardgame
DB_USERNAME=root
DB_PASSWORD=P@assword1!

Database.php

'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_T_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'),
        ]) : [],
    ],

CardController.php

  public function generateCards()
  {
  $card = new Card();
  $card->card_price = 0;
  $card->active = 1;
  $card->save();
  }

Web.php

 Route::get('/generate-cards', 'CardController@generateCards');

Card.php

class Card extends Model
{
 protected  $guarded =[];
}

迁移文件

public function up()
{
    Schema::create('cards', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->integer('card_price');
        $table->integer('active');
        $table->timestamps();
    });
}

我已经尝试了清除缓存,并将DB_PASSWORD编辑为DB_T_PASSWORD,因为这修复了一个类似的问题。双重检查了DB名称密码等,同时其他项目也已经在运行。但我无法找出问题所在。


1
展示 Card 模型并运行 php artisan config:cache 命令。 - pr1nc3
你尝试过直接在 Database.php 文件中将 database 键更改为 cardgame 吗? - Goms
@pr1nc3 php artisan config:cache 完成了任务。谢谢。 - FEBzX
@Goms 不会,但是 Forge 仍然会取相同的值,对吧? - FEBzX
很高兴能够帮助。我发布了创建新数据库并迁移数据表的步骤的完整答案。这对其他用户也可能会有帮助。 - pr1nc3
@pr1nc3 当然!它有帮助! - FEBzX
6个回答

13
  1. 进入本地服务器,删除数据库并重新创建一个名为cardgame的新数据库。

  2. 在控制台中进入 Laravel 项目,并运行php artisan config:cache命令。这样,所有环境变量将被使用。

  3. 运行php artisan:migrate来运行数据库迁移并创建表格。

如果按照以上3个步骤的顺序来执行,您应该是安全的。


4
您需要清除缓存,因为旧的配置信息在缓存文件中,只需在终端中运行以下命令以清除缓存:
php artisan config:cache

0

在php admin中创建数据库,然后再次迁移您的数据库 php artisan migrate,它可以100%正常工作


0
您可以通过2个简单步骤解决此问题。
步骤1:php artisan config:cache 步骤2:php artisan migrate

0

我曾经遇到过同样的问题,按照以下步骤解决了它:

1)停止服务器

2)运行php artisan config:clear命令。这个命令将会删除bootstrap\cache\config.php文件

3)重新启动服务器,现在应该可以正常工作了。


0
我也遇到了同样的错误,并实施了上述所有解决方案,但错误仍然不断重现。但是我编辑了.env和env.example文件,将database =“laravel”更改为我的项目名称,例如transportsytem,然后它就可以工作了。解决问题的最佳方法是使用您创建的数据库名称编辑.env和env.example文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接