使用 Laravel 5 设置 Mariadb
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/29106285/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Setting up Mariadb with Laravel 5
提问by ferenan
I've been trying to set up my database connexion to Laravel using MariaDB without success, executing my app return this error :
我一直在尝试使用 MariaDB 设置与 Laravel 的数据库连接但没有成功,执行我的应用程序返回此错误:
PDOException in Connector.php line 47:
SQLSTATE[HY000] [1049] Unknown database 'data'
here's my Database.php file:
这是我的 Database.php 文件:
'default' => 'mysql',
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => storage_path().'/database.sqlite',
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'prefix' => '',
],
],
Here's my .env file :
这是我的 .env 文件:
APP_ENV=local
APP_DEBUG=true
APP_KEY=ZP9Ao5RJhZjS7EqJuaYRltSIC7HTL4vp
DB_HOST=localhost
DB_DATABASE=data
DB_USERNAME=root
DB_PASSWORD=secret
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
this error dump :
此错误转储:
in Connector.php line 47
at PDO->__construct('mysql:host=localhost;dbname=data', 'root', 'secret', array('0', '2', '0', false, '0')) in Connector.php line 47
at Connector->createConnection('mysql:host=localhost;dbname=data', array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'data', 'username' => 'root', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql'), array('0', '2', '0', false, '0')) in MySqlConnector.php line 20
at MySqlConnector->connect(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'data', 'username' => 'root', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) in ConnectionFactory.php line 58
at ConnectionFactory->createSingleConnection(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'data', 'username' => 'root', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) in ConnectionFactory.php line 47
at ConnectionFactory->make(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'data', 'username' => 'root', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false), 'mysql') in DatabaseManager.php line 177
at DatabaseManager->makeConnection('mysql') in DatabaseManager.php line 65
at DatabaseManager->connection(null) in Model.php line 3134
at Model::resolveConnection(null) in Model.php line 3100
at Model->getConnection() in Model.php line 1895
at Model->newBaseQueryBuilder() in Model.php line 1836
at Model->newQueryWithoutScopes() in Model.php line 1810
at Model->newQuery() in Model.php line 3321
at Model->__call('get', array()) in SongsController.php line 20
at Song->get() in SongsController.php line 20
at SongsController->index()
at call_user_func_array(array(object(SongsController), 'index'), array()) in Controller.php line 246
at Controller->callAction('index', array()) in ControllerDispatcher.php line 162
at ControllerDispatcher->call(object(SongsController), object(Route), 'index') in ControllerDispatcher.php line 107
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 108
at ControllerDispatcher->callWithinStack(object(SongsController), object(Route), object(Request), 'index') in ControllerDispatcher.php line 67
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\SongsController', 'index') in Route.php line 198
at Route->runWithCustomDispatcher(object(Request)) in Route.php line 131
at Route->run(object(Request)) in Router.php line 691
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in Router.php line 693
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 660
at Router->dispatchToRoute(object(Request)) in Router.php line 618
at Router->dispatch(object(Request)) in Kernel.php line 210
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 43
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 17
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 61
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in Kernel.php line 111
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 84
at Kernel->handle(object(Request)) in index.php line 53
I think it has to do with some sort of conflict between Mysql and MariaDB. It would be helpful if anyone who already tried to use MariaDB with Laravel could provide an example or experience. The weird thing is I have been able to execute my migration file with "php artisan:migrate" and the database does exist with the appropriate tables. How can the migration scripts connect to the database and the controllers fail ? What am I doing wrong ?
我认为这与 Mysql 和 MariaDB 之间的某种冲突有关。如果任何已经尝试将 MariaDB 与 Laravel 结合使用的人都可以提供示例或经验,那将会很有帮助。奇怪的是我已经能够使用“php artisan:migrate”执行我的迁移文件,并且数据库确实存在于适当的表中。迁移脚本如何连接到数据库而控制器失败?我究竟做错了什么 ?
回答by ferenan
I finally resolved that upset, since I was using Homestead, a laravel vagrant box to execute my website, the site was in fact trying to connect to an inner mysql located inside Homestead, and I was never going to reach MariaDB. I have still not figured how to use MariaDB within Homestead, but at least I have narrowed the search now.
我终于解决了这个问题,因为我使用的是 Homestead,一个 Laravel 流浪盒来执行我的网站,该网站实际上试图连接到位于 Homestead 内部的内部 mysql,而我永远不会到达 MariaDB。我仍然没有想出如何在 Homestead 中使用 MariaDB,但至少我现在缩小了搜索范围。