jpswade/laravel-database-tools

Laravel 数据库工具

1.0.0 2023-03-02 20:06 UTC

This package is auto-updated.

Last update: 2024-09-02 22:00:26 UTC


README

Laravel 缺失的数据库工具集。一套常用的 Laravel 数据库工具。

使用此包,您可以

  • 创建数据库(如果不存在的话)
  • 从另一个数据库导出到文件
  • 从由 Spatie Backup 包 创建的数据库备份中获取并解压缩
  • 从文件导入
  • 更新字符集和校对规则
  • 通过使用 PDO 为 SQLite 创建缺失的函数,并通过 PHP 函数提供 SQLite 与 MySQL 的兼容性,解决“找不到函数”的错误。
  • 使用 MySQL 命令优化数据库表(使用 OPTIMIZE TABLE)

安装

将包安装到您的 Laravel 应用中

  • composer require --dev jpswade/laravel-database-tools

注意:默认情况下,仅将这些工具安装到开发环境中是明智的,因为在生产环境中通常不需要它们。

配置

发布并自定义您的 dbtools.php 文件

  • php artisan vendor:publish --provider="Jpswade\LaravelDatabaseTools\ServiceProvider" --tag="config"

这允许您设置备份的源数据库和/或文件系统。

  • dbtools.database - 定义 db:dump 命令的源数据库,类似于 Laravel 数据库配置。
  • dbtools.filesystem - 定义 db:getFromBackup 命令的源文件系统,类似于 Laravel 文件系统配置。
  • dbtools.filesystem.path - 定义 db:getFromBackup 命令的路径。
  • dbtools.import - 您可以在此处定义 db:importFromFile 命令的 method(命令或普通)。

注意

  • db:getFromBackup 命令回退到 spatie/laravel-backup 包进行配置。

用法

命令如下

  • db:create - 创建数据库架构。
  • db:dump - 从配置的服务器获取最新数据库的副本。
  • db:getFromBackup - 从备份下载数据库备份文件。
  • db:importFromFile {file?} - 将数据从 sql 文件导入数据库。
  • db:charset - 将字符集和校对规则更改为目标数据库设置的值。
  • db:optimize - 优化您的数据库表。

SQLite MySQL 兼容性提供者

对于 测试,您可以将提供者添加到您的测试中

    protected function registerServiceProviders(): void
    {
        $this->app->register(SqliteMysqlCompatibilityProvider::class);
    }

    protected function setUp(): void
    {
        parent::setUp();

        $this->registerServiceProviders();
    }

在生产环境中,遵循常规的 注册提供者 指令

config/app.php 中,找到 providers 数组并添加

'providers' => [
    // Other Service Providers
 
    Jpswade\LaravelDatabaseTools\SqliteMysqlCompatibilityProvider::class,
],

限制

如果您使用某些命令,您会遇到以下限制

  • db:getFromBackup 命令依赖于 league/flysystem-aws-s3-v3 "^1.0" 包,当您根据 Laravel 文档使用 Amazon S3 驱动程序 时。
  • db:dump 命令依赖于 spatie/db-dumper
  • 命令目前仅测试过与 MySQL 一起使用,但可以扩展到其他数据库。
  • db:importFromFile 命令只能导入 .sql 文件。
  • db:optimize 命令目前仅适用于 MySQL。

故障排除

找不到类 'League\Flysystem\AwsS3v3\AwsS3Adapter'

% composer require league/flysystem-aws-s3-v3:~1.0

注意:需要用于 db:getFromBackup 命令使用 S3 驱动程序。

找不到类 'Spatie\DbDumper\Databases\MySql'

% composer require spatie/db-dumper

注意:由db:dump命令所需。