【问题标题】:Laravel 5 - Unknown DatabaseLaravel 5 - 未知数据库
【发布时间】:2016-01-09 22:03:28
【问题描述】:

我正在尝试在 laravel 5 中制作登录表单。

每次我尝试登录时都会出现错误

Connector.php 第 55 行中的 PDOException:SQLSTATE[42000] [1049] 未知 数据库'php2project'

但是数据库存在。

我可以毫无问题地使用“php artisan migrate”,所以我不知道为什么我现在遇到这个问题。

这是我的 .env 文件的外观

APP_ENV=local
APP_DEBUG=true
APP_KEY=_STACK_

DB_HOST=127.0.0.1
DB_DATABASE=php2project
DB_USERNAME=root
DB_PASSWORD=_STACK_

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
MAIL_ENCRYPTION=null

编辑:这是我的配置/数据库信息

'default' => env('DB_CONNECTION', 'mysql'),

/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| Here are each of the database connections setup for your application.
| Of course, examples of configuring each database platform that is
| supported by Laravel is shown below to make development simple.
|
|
| All database work in Laravel is done through the PHP PDO facilities
| so make sure you have the driver for your particular database of
| choice installed on your machine before you begin development.
|
*/

'connections' => [

    'sqlite' => [
        'driver'   => 'sqlite',
        'database' => database_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', ''),
        'charset'  => 'utf8',
        'prefix'   => '',
    ],

],

控制器

<?php
namespace App\Http\Controllers;
use View;
use Auth;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;

class LogInController extends Controller 
{
    public function showLogin()
    {
        return View::make('login.login');
    }

    public function doLogin()
    {
        // validate
        $rules = array(
            'email'    => 'required|email',
            'password' => 'required|alphaNum|min:3'
        );
        // run the validation rules on the inputs from the form
        $validator = Validator::make(Input::all(), $rules);

        // if the validator fails, redirect back to the form
        if ($validator->fails()) {
            return Redirect::to('login')
                ->withErrors($validator)
                ->withInput(Input::except('password'));
        } else {
            // create our user data for the authentication
            $userdata = array(
                'email'     => Input::get('email'),
                'password'  => Input::get('password')
            );
            // attempt to do the login
            if (Auth::attempt($userdata)) {

                // validation successful!
                // redirect them to the secure section or whatever
                // return Redirect::to('secure');
                // for now we'll just echo success (even though echoing in a controller is bad)
                echo 'SUCCESS!';

            } else {        

                // validation not successful
                return Redirect::to('login');
            }
        }
    }
}

查看

@extends('layouts.master')
@section('title', 'Login')
@section('content')

{!! Form::open(array('url' => 'login')) !!}
    <h1>Login</h1>
    <p>
        {!! $errors->first('email') !!}
        {!! $errors->first('password') !!}
    </p>

    <p>
        {!! Form::label('email', 'Email Address') !!}
        {!! Form::text('email', Input::old('email'), array('placeholder' => 'john@snow.com')) !!}
    </p>

    <p>
        {!! Form::label('password', 'Password') !!}
        {!! Form::password('password') !!}
    </p>

    <p>{!! Form::submit('Submit!') !!}</p>
{!! Form::close() !!}

【问题讨论】:

  • 可以发一下app/config/database.php的内容吗?
  • 您在哪个环境下工作?
  • @Daan 更新了 OP
  • 您是否通过php artisan serve 运行此程序?在serve 命令已经启动后,您是否对.env 文件进行了任何更改?
  • 我看到你在使用 laravel 的 auth,你能看到 app/config/auth.php 中的驱动设置为 eloquent 还是 database ?如果口才比你能发布用户模型吗?

标签: php mysql database laravel


【解决方案1】:

首先检查.evn中是否设置了正确的凭据

如果是,请尝试缓存配置。有时可能会出现问题,因为您在 .env 中进行了更改但没有缓存它(仅当您在项目中缓存配置时)。

尝试运行php artisan cache:config

【讨论】:

    【解决方案2】:

    您的 database 似乎在 config->database.php 中设置为 forge.env 文件是 php2project。确保它们在两个文件中相同,并且 password 在 config->database.php 中为空白,但在 .env 文件中设置为 _STACK_ 并确保您的 用户名两个文件都一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 2020-02-08
      • 2021-01-25
      • 2020-10-21
      • 2019-08-09
      相关资源
      最近更新 更多