【问题标题】:Laravel mySQL database error "Unknown database"Laravel mySQL 数据库错误“未知数据库”
【发布时间】:2015-07-09 16:46:34
【问题描述】:

我正在尝试使用命令 php artisan migrate,但是我不断收到错误:

PDOException
SQLSTATE[HY000] [1049] Unknown database 'forge'

起初我得到了:

access denied for user 'homestead'@'localhost'

但是当我将 database.php 和 .env 文件更改为:

数据库.php

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'laravel'),
        'username'  => env('DB_USERNAME', 'root'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

.env

DB_HOST=localhost
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=''

我在某处读到我必须在 mySQL 数据库中创建数据库。如果我确实需要这样做,为什么会这样,命令行是否有另一种更有效的方法。我的开发环境是Windows 7。

更新 我已经通过转到 localhost/phpmyadmin 并创建一个具有相同名称和排序规则的数据库来解决此错误。但我仍然不明白为什么我必须使用 phpmyadmin 来创建它,我如何能够从命令行执行此操作。

另外,在这个数据库中,我有用户表,如果我从用户那里获得更多信息,我是创建另一个数据库还是只使用一个带有值的表?

【问题讨论】:

    标签: laravel


    【解决方案1】:

    通常您的所有数据都包含在一个数据库中,并且用户只能访问该表。您尝试通过的方法不安全,因为您必须授予 laravel(或应用程序)创建任何表、删除任何表(以撤消创建的表)和读取任何表的权限,这可能会让人毛骨悚然与其他应用程序共享数据库的环境。

    它还说,如果应用程序不遵守 dbs 的前缀命名,它可能会随意创建它们并与另一个应用程序发生冲突,因为命名空间不存在。

    如果您确实需要此功能,可以按照 Koster (http://laravel.io/forum/09-13-2014-create-new-database-and-tables-on-the-fly) 编写的指南进行操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 2018-12-17
      • 2015-01-08
      • 2016-01-09
      • 1970-01-01
      • 2016-10-07
      • 2020-06-25
      相关资源
      最近更新 更多