简体   繁体   English

使用Laravel 5.7设置本地开发数据库

[英]Setting up local development database with Laravel 5.7

I created a new Laravel application (Laravel 5.7) on my hosting platform, Cloudways. 我在托管平台Cloudways上创建了一个新的Laravel应用程序(Laravel 5.7)。 Cloudways is handy, because you can install new Laravel builds directly from their interface, rather than creating one locally, and pushing to the server. Cloudways很方便,因为您可以直接从其界面安装新的Laravel构建,而不是在本地创建并推送到服务器。

At any rate, I created the build, and pulled the files down to my local machine. 无论如何,我创建了构建,并将文件拉到本地计算机上。 In previous versions of Laravel, I seem to recall just being able to edit the .env file to point to my local database (which is currently run through MAMP/phpMyAdmin) 在Laravel的早期版本中,我似乎记得只有能够编辑.env文件以指向我的本地数据库(当前通过MAMP / phpMyAdmin运行)。

I made sure that I created a new database, and then updated the .env file to point to that database. 我确保创建了一个新数据库,然后更新了.env文件以指向该数据库。

However, whenever I attempt to run a migration, it still wants to point to the DB connections specified in the database.php config file. 但是,每当我尝试运行迁移时,它仍然要指向database.php配置文件中指定的数据库连接。

After I updated the .env file, I DID attempt to run both: 更新.env文件后,我DID尝试同时运行两个:

php artisan config:clear
php artisan cache:clear

But neither seemed to have any impact. 但似乎都没有影响。 I am still getting an error every time I try to run a migration. 每次尝试运行迁移时,我仍然会收到错误消息。

I can't seem to find any further documentation on how to specify a different local dev database, from the production database. 我似乎找不到关于如何从生产数据库中指定其他本地开发数据库的其他文档。

Can anybody offer any assistance? 有人可以提供任何帮助吗?

Edit: 编辑:

On MAMP, it looks like it has my local settings as: 在MAMP上,它的本地设置如下:

Host:   localhost
Port:   8889
User:   root
Password:   root

My Current .env file contents: 我当前的.env文件内容:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:Z2ndcYy3H7GMfmEW1rKYxYAxMMjyyAWAsoS+9Q3yppc=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=scoutsafe
DB_USERNAME=root
DB_PASSWORD=root

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

And my current database.php contents: 和我当前的database.php内容:

    return array(

    /*
    |--------------------------------------------------------------------------
    | PDO Fetch Style
    |--------------------------------------------------------------------------
    |
    | By default, database results will be returned as instances of the PHP
    | stdClass object; however, you may desire to retrieve records in an
    | array format for simplicity. Here you can tweak the fetch style.
    |
    */

    'fetch' => PDO::FETCH_CLASS,

    /*
    |--------------------------------------------------------------------------
    | Default Database Connection Name
    |--------------------------------------------------------------------------
    |
    | Here you may specify which of the database connections below you wish
    | to use as your default connection for all database work. Of course
    | you may use many connections at once using the Database library.
    |
    */

    'default' => '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' => array(

            'sqlite' => array(
                    'driver'   => 'sqlite',
                    'database' => __DIR__.'/../database/production.sqlite',
                    'prefix'   => '',
            ),


            'mysql' => array(
                    'driver'    => 'mysql',
                    'host'      => '127.0.0.1',
                    'database'  => 'scoutsafe',
                    'username'  => 'root',
                    'password'  => 'root',
                    'charset'   => 'utf8',
                    'collation' => 'utf8_unicode_ci',
                    'prefix'    => '',
            ),

            'pgsql' => array(
                    'driver'   => 'pgsql',
                    'host'     => 'localhost',
                    'database' => 'forge',
                    'username' => 'forge',
                    'password' => '',
                    'charset'  => 'utf8',
                    'prefix'   => '',
                    'schema'   => 'public',
            ),

            'sqlsrv' => array(
                    'driver'   => 'sqlsrv',
                    'host'     => 'localhost',
                    'database' => 'database',
                    'username' => 'root',
                    'password' => '',
                    'prefix'   => '',
            ),

    ),

    /*
    |--------------------------------------------------------------------------
    | Migration Repository Table
    |--------------------------------------------------------------------------
    |
    | This table keeps track of all the migrations that have already run for
    | your application. Using this information, we can determine which of
    | the migrations on disk haven't actually been run in the database.
    |
    */

    'migrations' => 'migrations',

    /*
    |--------------------------------------------------------------------------
    | Redis Databases
    |--------------------------------------------------------------------------
    |
    | Redis is an open source, fast, and advanced key-value store that also
    | provides a richer set of commands than a typical key-value systems
    | such as APC or Memcached. Laravel makes it easy to dig right in.
    |
    */

    'redis' => array(

            'cluster' => false,

            'default' => array(
                    'host'     => '127.0.0.1',
                    'port'     => 6379,
                    'database' => 0,
            ),

    ),

);

Your mysql config are hardcoded. 您的mysql配置是硬编码的。 You have to update your database.php like this to use the variables from the .env : 您必须像这样更新您的database.php才能使用.env的变量:

'connections' => [
    // Other connection options

    'mysql' => [
        // Other mysql options
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        // Other mysql options
    ],
],

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM