Laravel mySQL数据库错误“未知数据库”

时间:2015-07-09 16:46:35

标签: laravel

我试图使用命令php artisan migrate,但是我一直收到错误:

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

起初我得到了:

access denied for user 'homestead'@'localhost'

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

时,这已得到修复

database.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来创建它,我怎么能从命令行执行此操作。

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

1 个答案:

答案 0 :(得分:0)

通常,您将所有数据都包含在一个数据库中,并且用户只能访问该表。您尝试通过的方法并不安全,因为您必须为laravel(或app)提供创建任何表的权限,删除任何表(以撤消创建的表),以及读取任何可能变得毛茸茸的表与其他应用程序共享数据库的环境。

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

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