can't run migrate:install in laravel5 - laravel-5

i have laravel 5 and it works fine on browser.After then for making table in database, firstly i have create directory i.e /opt/lampp/htdocs/laravel, then run php artisan migrate:install command but i have got message shown below. How to solve this problem.
cd /opt/lampp/htdocs/lovey
/opt/lampp/htdocs/lovey$ php artisan migrate:install
Application In Production! *
Do you really wish to run this command? [y/N] (yes/no) [no]:
HERE IS MY database.php file.
my database name is laravel.
return
[
'fetch' => PDO::FETCH_CLASS,
'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => database_path('database.sqlite'),
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'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', 'database'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'database'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
],
],
'migrations' => 'migrations',
'redis' => [
'cluster' => false,
'default' => [
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
],
],
];

Your .env is required for laravel to run properly. The .env file stores your enviroment configuration, your database configuration included.
http://laravel.com/docs/5.1/installation#environment-configuration
Example of .env
APP_ENV=local
APP_DEBUG=true
APP_KEY=J9dFWi5QPq2aIuAX9XAfnuOoKVmNsFHs
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
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
MAIL_ENCRYPTION=null
If you create your laravel project with composer:
composer create-project laravel/laravel --prefer-dist
A .env will be created. If you have created any other way .env may not have been created, but you will have a file named .env.example, you can copy/rename the file to .env and your laravel instalation should work fine.
Also if your application is in production you should change your APP_* parameters.

Related

laravel try to connect to localhost database while the database is in external server

I am working on localhost and I would like to connect my laravel app to an external database. I put all my settings in :
config/database.php :
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', 'XX.XX.XXX.XXX'),
'port' => env('DB_PORT', 'XXXX'),
'database' => env('DB_DATABASE', 'name'),
'username' => env('DB_USERNAME', 'username'),
'password' => env('DB_PASSWORD', 'password'),
'unix_socket' => env('DB_SOCKET', '/var/run/mysqld/mysqld.sock'),
'charset' => 'latin-1',
'collation' => 'latin1_swedish_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => 'InnoDB',
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
.env :
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:X...
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DATABASE_URL=XX.XX.XXX.XXX:XXXX
DB_HOST=XX.XX.XXX.XXX
DB_PORT=XXXX
DB_DATABASE=name
DB_USERNAME=username
DB_PASSWORD=password
I have the same error :
SQLSTATE[HY000] [1045] access denied for user : 'username'#'#localhost'
It seems that the app try to connect to localhost database but my database is not in localhost.
If you served your project with artisan(php artisan serve) you kill it and start it again when you change something in .env file.
Could you try it?

Laravel Hyn\Multi-Tenant Database [tenant] not configured

I am working on a multi-tenant laravel application, and have run into an issue with the hyn\multi-tenant package. The documentation for hyn\multi-tenant states that the tenant database connection will be handled by the package, and that as long as the system connection is available and the user has privileges to add and modify databases, the package will handle all tenant database connections.
Upon trying to create a tenant in my application I get the error: Database [tenant] is not configured.
I have seen many answers to this issue on SO, however they all refer to the Customer model, or localhost configurations. Hyn removed the Customer model, and the issue I am having is also happening on my DigitalOcean server published through Laravel Forge.
I would be grateful to anyone that might be able to provide some assistance.
My .env (local)
APP_NAME="Multi-Tenant"
APP_ENV=local
APP_KEY=base64:j1aLzU7m5LWK1keo/FjgbtpwTpVZ1NBj29zuXIByHek=
APP_DEBUG=true
APP_URL_BASE=localhost:8888/lms/public
APP_URL=http://${APP_URL_BASE}
LOG_CHANNEL=stack
DB_CONNECTION=system
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=lmssystem
DB_USERNAME=lmssystem
DB_PASSWORD=lmssystem
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}"
LIMIT_UUID_LENGTH32=true
My database.php
return [
'default' => env('DB_CONNECTION', 'system'),
'connections' => [
'system' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '8889'),
'database' => env('DB_DATABASE', 'lmssystem'),
'username' => env('DB_USERNAME', 'lmssystem'),
'password' => env('DB_PASSWORD', 'lmssystem'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => 'InnoDB',
],
],
'migrations' => 'migrations',
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],
'cache' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 1),
],
],
];
This issue turned out to be a logic error in my application not a database configuration issue. I was forced to deviate from Ashok's article on Medium [https://medium.com/#ashokgelal/a-full-featured-multi-tenant-app-with-laravel-part-1-4049a3cc229d][1] since the Hyn\Multi-Tenant package no longer supports the customer model.
After developing my own client model, and extending the existing Website and Hostname models to interact with the client model, I had to re-write the tenant:create command. In this, I created websites and hostnames directly from their extended models, rather than via the repositories as per the Hyn documentation (copied below)
Tenancy is heavily driven by events. For event listeners to properly work, you have to use the repositories to create new websites and hostnames.
use Hyn\Tenancy\Models\Website;
use Hyn\Tenancy\Contracts\Repositories\WebsiteRepository;
$website = new Website;
app(WebsiteRepository::class)->create($website);
dd($website->uuid);
$hostname = new Hostname;
$hostname->fqdn = 'luceos.demo.app';
app(HostnameRepository::class)->attach($hostname, $website);
Creating via the repositories resolved the:
Database [tenant] not configured
Error.
this code may be solve your problem
config/database.php :
'connections' => [
'system' => [
'driver' => env('DB_DRIVER', 'mysql'),
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', '123'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'tenant' => [
'driver' => env('DB_DRIVER', 'mysql'),
'host' => '',
'port' => env('DB_PORT', '3306'),
'database' => '',
'username' => '',
'password' => '',
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
],
create a "tenant" connection on the config/database.php file
'tenant' => [
'driver' => 'mysql',
'host' => env('TENANCY_HOST', '127.0.0.1'),
'port' => env('TENANCY_PORT', '3306'),
'database' => env('TENANCY_DATABASE', 'tenancy'),
'username' => env('TENANCY_USERNAME', 'tenancy'),
'password' => env('TENANCY_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
];
if it related to Livewire problem,
Open the config/livewire.php file and change this:
'middleware_group' => ['web'],
to this:
'middleware_group' => [
'web',
'universal',
InitializeTenancyByDomain::class, // or whatever tenancy middleware you use
],

How to use multiple database in Lumen

We've using Lumen for building API's , Now we need to access multiple databases.
Currently using .env for database config but unable to found the way to multiple databases in .env
where we need to read 2nd connection ...
First, you'll need to configure your connections. If you don't already have one you'll need to create a config directory in your project and add the file config/database.php. It might look like this:
<?php
return [
'default' => 'accounts',
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
'mysql2' => [
'driver' => 'mysql',
'host' => env('DB2_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB2_DATABASE'),
'username' => env('DB2_USERNAME'),
'password' => env('DB2_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
],
];
Once you've added your connection configurations, you can access them by getting the database manager object out of the container and calling ->connection('connection_name').
// Use default connection
app('db')->connection()->select('xx');
DB::connection()->select('yy');
// Use mysql2 connection
app('db')->connection('mysql2')->select('xx');
DB::connection('mysql2')->select('yy');
Hope this helps you!!
This also worked. In the current version of Lumen 5.7
config/database.php
<?php
return [
'default' => env('DB_CONNECTION', 'sqlsrv'),
'migrations' => 'migrations',
'connections' => [
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
],
'sqlsrv2' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE2', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
],
],
];
.env
DB_CONNECTION=sqlsrv
DB_HOST=localhost
DB_PORT=1433
DB_DATABASE=database1
DB_USERNAME=username
DB_PASSWORD=password
DB_DATABASE2=database2
Usage:
Model: protected $connection = 'sqlsrv2';
Other: ->connection('sqlsrv2')
I hope i help you!
Reference:https://fideloper.com/laravel-multiple-database-connections

Multiple Database SQL server Connections on Laravel 5.4 error

Inside of my database configuration file - likely app/config/database.php.
'connections' => [
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', '192.168.0.5'),//'ADMINRG-2UH26BG', // Provide IP address here
'database' => env('DB_DATABASE', 'VHPDEV'),
'username' => env('DB_USERNAME', 'sa'),
'password' => env('DB_PASSWORD', 'Dbp#2013'),
'prefix' => '',
],
'sqlsrv2' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', '192.168.0.5'),//'ADMINRG-2UH26BG', // Provide IP address here
'database' => env('DB_DATABASE', 'OCSDB'),
'username' => env('DB_USERNAME', 'sa'),
'password' => env('DB_PASSWORD', 'Dbp#2013'),
'prefix' => '',
],
],
.env
DB_CONNECTION=sqlsrv
DB_HOST=192.168.0.5
DB_PORT=3306
DB_DATABASE=VHPDEV
DB_USERNAME=sa
DB_PASSWORD=Dbp#2013
Query
DB::connection('sqlsrv')->table('B14SILHOLD')->get();
You can just clear cache of laravel by running command such as:- php artisan config:cache and try to execute it.
Also remember that check that your DB is defined in your model where you are using it or just put \DB::connection('sqlsrv')->table('B14SILHOLD')->get();

Do i need to change database configuration in database.php file in laravel when upload to server?

Do i need to change database configuration in database.php file in laravel when upload to server?
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
Don't change anything in database.php config file. What you need to do is to change DB credentials in .env file on server side.
So, you'll have different .env files on a local machine and server, but the same database.php config file.
https://laravel.com/docs/5.3/configuration#environment-configuration
Update your database.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'yourdatabasename'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'password'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],

Resources