当我使用
php artisan migrate
时,我收到错误 SQLSTATE[42000] [1049] Unknown database 'databaseName'
。
但是数据库确实存在!我什至尝试返回终端,登录mysql并再次创建数据库,它说数据库已经存在!
为什么会给我这个错误?
我也有同样的问题。当我运行: php artisan migrate. 就我而言,我使用 Vagrant 和苏格兰威士忌盒。
要解决此问题,请输入:
一切顺利。
在您的
app/config/database.php
文件中,将默认值从 databaseName
更改为您尝试在应用程序中使用的真实数据库名称,如下所示(对于 mysql
驱动程序):
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'your database name', //<-- put the database name
'username' => 'your user name',
'password' => 'your password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
有一件事可能是你的外壳。如果您阅读有关 区分大小写 的文档,它会说:
底层操作系统的区分大小写也有影响 数据库和表名的大小写敏感。这意味着 Windows 中数据库名和表名不区分大小写, 在大多数 Unix 版本中都很敏感。 Mac 操作系统是一个值得注意的例外 X,基于 Unix,但使用默认文件系统类型 (HFS+) 不区分大小写。
然后去检查您的应用程序数据库设置,发现@
app/config/database.php
。
看起来像这样的东西:
'mysql' => array(
'read' => array(
'host' => '192.168.1.1',
),
'write' => array(
'host' => '196.168.1.2'
),
'driver' => 'mysql',
'database' => 'databaseName',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
并仔细检查一切。
还可以尝试使用蛇形命名法而不是驼峰命名法作为数据库名称。
在我的例子中,我在这个端口上安装了 MySQL:3308,在 Laravel 环境文件中是 3306。
就我而言,我必须创建与
charset
和 collation
匹配的数据库。
数据库.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', 'test'),
'username' => env('DB_USERNAME', 'test'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
...
],
如果您使用 TablePlus,则可以在创建新数据库时简单地执行此操作