【问题标题】:cannot connect to Database - No database selected Error [closed]无法连接到数据库 - 未选择数据库错误 [关闭]
【发布时间】:2014-03-18 02:55:01
【问题描述】:

过去一个小时左右,我一直在努力让它工作。

当我尝试在 laravel 中执行查询时遇到错误。

具体错误如下:

exception 'PDOException' with message 'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected' in D:\www\testapp\vendor\laravel\framework\src\Illuminate\Database\Connection.php:272
Stack trace:
#0 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Database\Connection.php(272): PDO->prepare('select count(*)...')
#1 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Database\Connection.php(521): Illuminate\Database\Connection->Illuminate\Database\{closure}(Object(Illuminate\Database\MySqlConnection), 'select count(*)...', Array)
#2 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Database\Connection.php(277): Illuminate\Database\Connection->run('select count(*)...', Array, Object(Closure))
#3 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1028): Illuminate\Database\Connection->select('select count(*)...', Array)
#4 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1018): Illuminate\Database\Query\Builder->runSelect()
#5 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1005): Illuminate\Database\Query\Builder->getFresh(Array)
#6 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1369): Illuminate\Database\Query\Builder->get(Array)
#7 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1311): Illuminate\Database\Query\Builder->aggregate('count', Array)
#8 [internal function]: Illuminate\Database\Query\Builder->count()
#9 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(786): call_user_func_array(Array, Array)
#10 D:\www\testapp\app\routes.php(67): Illuminate\Database\Eloquent\Builder->__call('count', Array)
#11 D:\www\testapp\app\routes.php(67): Illuminate\Database\Eloquent\Builder->count()
#12 [internal function]: {closure}()
#13 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Routing\Route.php(80): call_user_func_array(Object(Closure), Array)
#14 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Routing\Route.php(47): Illuminate\Routing\Route->callCallable()
#15 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Routing\Router.php(1016): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request))
#16 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(574): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#17 D:\www\testapp\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(550): Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request))
#18 D:\www\testapp\public\index.php(50): Illuminate\Foundation\Application->run()
#19 {main}

我的 config/database.php 如下:

'connections' => array(

    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'testdatabase',
        'username'  => 'MYUSER',
        'password'  => 'MYPASSWORD',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

),

触发这个错误的代码是:

 $users = DB::table('users')->get();
 print_r($users . "users");

有人可以帮忙吗,我检查了给定 MySQL 用户的权限,我也用 root 帐户尝试过,但到目前为止无济于事。

【问题讨论】:

  • 您确定指定的数据库存在吗?
  • 尝试 127.0.0.1 作为主机一次
  • 你有没有'default' => 'mysql',上面有'connections' => array( ... ?
  • 这真的很奇怪,我只是设置了一个全新的 laravel 设置并要求它以相同的详细信息连接到同一个数据库并且它可以工作。它获取结果。我想知道其他设置有什么问题。 @marcanuy 是的,我确实在文件顶部有这个
  • 我认为环境冲突可能存在问题 - 尝试从此文件中注释掉所有自定义环境,将 detectEnvironment 方法留空并尝试它是否连接

标签: php mysql pdo laravel


【解决方案1】:

这是环境问题。

将您的database.php 配置文件放入config/{environment}/database.php,然后检查在bootstrap/start.php 文件中是否正确定义了env,它应该可以工作。

要检查您当前的环境,请运行:

echo App::environment();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多