首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Hyn\多租户数据库[租户]未配置

Laravel Hyn\多租户数据库[租户]未配置
EN

Stack Overflow用户
提问于 2018-10-03 12:56:27
回答 3查看 5.2K关注 0票数 3

我正在开发一个多租户laravel应用程序,并且遇到了hyn\multi-tenant包的问题。hyn\multi-tenant的文档说明租户数据库连接将由程序包处理,并且只要系统连接可用且用户具有添加和修改数据库的权限,程序包就将处理所有租户数据库连接。

在尝试在我的应用程序中创建租户时,我得到错误:未配置数据库租户。

我在SO上看到了许多关于这个问题的答案,但它们都是指客户模型或本地主机配置。Hyn删除了客户模型,我遇到的问题也发生在我通过Laravel Forge发布的DigitalOcean服务器上。

我将非常感谢任何能够提供一些帮助的人。

我的.env (本地)

代码语言:javascript
复制
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

我的database.php

代码语言:javascript
复制
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),
        ],

    ],

];
EN

回答 3

Stack Overflow用户

发布于 2018-10-04 13:37:38

这个问题被证明是我的应用程序中的逻辑错误,而不是数据库配置问题。我被迫背离了Ashok关于Medium [https://medium.com/@ashokgelal/a-full-featured-multi-tenant-app-with-laravel-part-1-4049a3cc229d][1]的文章,因为Hyn\Multi-Tenant包不再支持客户模型。

在开发了我自己的客户端模型,并扩展了现有的网站和主机名模型以与客户端模型交互之后,我不得不重写tenant:create命令。在这里,我直接从他们的扩展模型创建网站和主机名,而不是按照Hyn文档(复制如下)通过存储库创建。

租户在很大程度上受到事件的驱动。为了让事件侦听器正常工作,您必须使用存储库来创建新的网站和主机名。使用Hyn\Tenancy\Models\Website;使用Hyn\Tenancy\Contracts\Repositories\WebsiteRepository;

代码语言:javascript
复制
$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);

通过存储库创建解决了以下问题:

代码语言:javascript
复制
Database [tenant] not configured

错误。

票数 1
EN

Stack Overflow用户

发布于 2019-10-02 17:05:29

这段代码可能会解决你的问题

配置/数据库.php :

代码语言:javascript
复制
'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,
    ],

],
票数 0
EN

Stack Overflow用户

发布于 2022-01-24 02:12:35

在config/database.php文件上创建"tenant“连接

代码语言:javascript
复制
'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,
    ];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52619940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档