Closed RushabhJoshi closed 6 years ago
Which trait does your Hostname
model use?
@Thijmen, the snippet above shows he's using the one from this package.
How does your database.php
-config looks like?
<?php
return [
/*
|--------------------------------------------------------------------------
| 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' => env('DB_CONNECTION', 'sqlite'),
/*
|--------------------------------------------------------------------------
| 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' => env('DB_DATABASE', database_path('local.sqlite')), __DIR__.'/../database/local.sqlite',//
'prefix' => '',
],
'system' => [
'host' => env('DB_HOST', '127.0.0.1'),
'driver' => env('DB_DRIVER', 'mysql') ,
'username' => env('DB_USERNAME', 'tenancy'),
'database' => env('DB_DATABASE', 'tenancy'),
'password' => env('DB_PASSWORD'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
/*
'mysql' => [
'driver' => 'mariadb',
'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', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
*/
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
'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' => '',
],
],
/*
|--------------------------------------------------------------------------
| 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' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
];
Does your system database have a hostnames table? Aka did you run those migrations?
Yes, as I said it was working before, FYI I run this code in a console command
What value has DB_CONNECTION
in your .env
?
DB_CONNECTION=system
DB_USERNAME=tenancy
DB_PASSWORD=tenancy
DB_DATABASE=tenancy
DB_DRIVER=mysql
here code successfully created a website, the problem only occurs when we try to create hostname which is next to creating a website
This is truly odd. It seems it's trying to save hostnames to the tenant connection instead of the system connection. Is this a clean install or did you modify any logic so far? You said it worked earlier and now it doesn't, any pointers what changed in between?
I haven't changed any code. In between, I just added other packages.
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=7.0.0",
"ajthinking/tinx": "^2.0",
"caouecs/laravel-lang": "~3.0",
"cartalyst/stripe-laravel": "7.0.*",
"dannyvankooten/laravel-vat": "dev-master",
"doctrine/dbal": "^2.6",
"fideloper/proxy": "~3.3",
"florianv/laravel-swap": "^1.1",
"hyn/multi-tenant": "5.*",
"ijeffro/laravel-airlines": "dev-master",
"ijeffro/laravel-airports": "dev-master",
"jeroennoten/laravel-adminlte": "^1.22",
"laravel/cashier": "~7.0",
"laravel/framework": "5.5.*",
"laravel/tinker": "~1.0",
"laravelcollective/html": "^5.5.0",
"laravelnews/laravel-twbs4": "^1.3",
"mcamara/laravel-localization": "^1.3",
"php-http/guzzle6-adapter": "^1.1",
"php-http/message": "^1.6",
"propaganistas/laravel-intl": "^1.2",
"spatie/laravel-permission": "^2.7",
"ybr-nx/laravel-mariadb": "^1.0"
},
"require-dev": {
"codedungeon/phpunit-result-printer": "^0.7.0",
"filp/whoops": "~2.0",
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~6.0"
},
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"extra": {
"laravel": {
"dont-discover": [
],
"providers":[
"Propaganistas\\LaravelIntl\\IntlServiceProvider::class"
]
}
},
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
}
}
composer.json
Hello @luceos, I have gone through the git commit one by one and appeared that nothing really changed which affect the code
I thought it is because of this package laravelcollectiv/html
So I have removed this package and its provider from app.php
config file still got no luck
Other changes are related to controller, routes, migrations, and model (the models are user-defined I haven't changed any package model or override them).
here is my stack trace
Exception trace:
PDO->prepare() at /home/rushabh/localhost/p-saas/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:77
Doctrine\DBAL\Driver\PDOConnection->prepare() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Connection.php:452
Illuminate\Database\Connection->Illuminate\Database\{closure}() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Connection.php:657
Illuminate\Database\Connection->runQueryCallback() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Connection.php:624
Illuminate\Database\Connection->run() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Connection.php:459
Illuminate\Database\Connection->statement() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Connection.php:411
Illuminate\Database\Connection->insert() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php:32
Illuminate\Database\Query\Processors\Processor->processInsertGetId() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2137
Illuminate\Database\Query\Builder->insertGetId() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:1281
Illuminate\Database\Eloquent\Builder->__call() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:722
Illuminate\Database\Eloquent\Model->insertAndSetId() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:687
Illuminate\Database\Eloquent\Model->performInsert() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:550
Illuminate\Database\Eloquent\Model->save() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneOrMany.php:250
Illuminate\Database\Eloquent\Relations\HasOneOrMany->save() at /home/rushabh/localhost/p-saas/vendor/hyn/multi-tenant/src/Repositories/HostnameRepository.php:176
Hyn\Tenancy\Repositories\HostnameRepository->attach() at /home/rushabh/localhost/p-saas/app/Console/Commands/Utils.php:73
App\Console\Commands\Utils->handle() at n/a:n/a
call_user_func_array() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:29
Illuminate\Container\BoundMethod::Illuminate\Container\{closure}() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:87
Illuminate\Container\BoundMethod::callBoundMethod() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:31
Illuminate\Container\BoundMethod::call() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Container/Container.php:549
Illuminate\Container\Container->call() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Console/Command.php:183
Illuminate\Console\Command->execute() at /home/rushabh/localhost/p-saas/vendor/symfony/console/Command/Command.php:252
Symfony\Component\Console\Command\Command->run() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Console/Command.php:170
Illuminate\Console\Command->run() at /home/rushabh/localhost/p-saas/vendor/symfony/console/Application.php:938
Symfony\Component\Console\Application->doRunCommand() at /home/rushabh/localhost/p-saas/vendor/symfony/console/Application.php:240
Symfony\Component\Console\Application->doRun() at /home/rushabh/localhost/p-saas/vendor/symfony/console/Application.php:148
Symfony\Component\Console\Application->run() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Console/Application.php:88
Illuminate\Console\Application->run() at /home/rushabh/localhost/p-saas/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:121
Illuminate\Foundation\Console\Kernel->handle() at /home/rushabh/localhost/p-saas/artisan:37
What is the environment like, is this virtualised?
@luceos I am running on my laptop os, No virtual setup Ubuntu 16.04
I have no clue what is wrong. But it's obvious the wrong connection is being used.
If possible you might want to upgrade to Laravel 5.6 and Hyn 5.1.*; perhaps that will resolve this issue. Otherwise you'd have to debug this as I can't seem to reproduce.
Sure, Thanks a lot
Feel free to re-open when you have more information or, if possible, provide a way for me to reproduce.
Hello @luceos ,
I have updated the laravel version and package still having the same error
Okay so this might be related to an insert on a has many relationships when attaching the hostname to the website. The relationship might default back on the wrong connection.
I'll look into it.
@RushabhJoshi have you been able to move forward? I was just reading into this and still think it's very curious that such simple code misbehaves this badly. The first snippet you posted in this issue, where did you place that (controller, repository)?
Hey, Sorry for late reply @luceos It is strange now I can not reproduce the same error I have tried after some time and the same code is not producing an error pretty strange for me also. I think I don't have this issue now. I am closing this issue now. You help is much appreciated
Thank you
Earlier everything works perfectly but suddenly I am not able to create new tenant I also followed the documentation of Full-featured app
My sample code is
..
tenancy.php config
webserver.php config
Error log