x7media/laravel-planetscale

一个用于管理 PlanetScale 数据库迁移的 Laravel 数据库包。

v1.1.0 2023-05-19 19:23 UTC

This package is auto-updated.

Last update: 2024-09-10 22:48:29 UTC


README

Latest Version on Packagist Total Downloads

此包为您的 Laravel 应用程序添加了一个 php artisan pscale:migrate 命令,当使用 PlanetScale 数据库时,可以使用此命令代替常规的 php artisan migrate 命令。

安装

通过 Composer

composer require x7media/laravel-planetscale

配置与使用

  1. 登录到您的 PlanetScale 账户,从组织设置中获取服务令牌和服务令牌 ID。还要注意记录您的组织名称和产品分支名称,以供下一步操作使用。

  2. 为您的应用程序数据库中的服务令牌添加以下数据库级别权限

    • create_branch - 创建数据库分支
    • delete_branch - 删除数据库分支
    • connect_branch - 连接到,或为数据库分支创建密码和证书
    • create_deploy_request - 创建数据库部署请求
    • read_deploy_request - 读取数据库部署请求
  3. 在 PlanetScale 的数据库设置屏幕上,点击勾选以启用“自动复制迁移数据”设置。从迁移框架下拉菜单中选择“Laravel”,它应该填充“migrations”作为迁移表名。然后保存数据库设置。这将允许迁移状态在 PlanetScale 数据库分支之间同步。

  4. 在您的应用程序中设置以下环境变量,并使用适当的值

PLANETSCALE_ORGANIZATION=

PLANETSCALE_PRODUCTION_BRANCH=

PLANETSCALE_SERVICE_TOKEN_ID=

PLANETSCALE_SERVICE_TOKEN=

此外,您需要确保数据库名称在以下位置已设置

DB_DATABASE=

可选:您可以选择发布配置

php artisan vendor:publish --tag=laravel-planetscale-config

然后自定义配置中的值。注意:如果我们采取这种方法,我们 强烈建议 您仍然至少使用环境变量或某种其他秘密存储来存储服务令牌和服务令牌 ID,以确保安全。

  1. 在您的部署脚本或流程中替换 php artisan migrate 命令为以下内容
php artisan pscale:migrate

注意: pscale:migrate 命令支持与 Laravel 内置迁移命令相同的选项,并在过程中到达该步骤时将传递这些选项。

常见问题解答

为什么这是必要的?

当 PlanetScale 作为您应用程序的生产数据库使用时,具有许多优势。当启用安全迁移时,您不能直接对生产数据库分支运行架构更改。相反,您使用分支流程和 Vitess 的非阻塞架构迁移工具来安全地运行数据库迁移。

这是通过创建架构分支,在该分支上运行迁移,然后打开部署请求以让 PlanetScale 在生产中为您管理架构迁移来实现的。

此包使用 PlanetScale 的公共 API来自动化创建新的开发分支、将您的应用程序连接到开发分支、在开发分支上运行 Laravel 迁移、将其合并回生产分支以及删除开发分支的过程。您将获得两者的最佳之处,即您熟悉的迁移流程,同时也利用了 PlanetScale 的架构迁移工具。

PlanetScale的分支功能有哪些显著的限制吗?

是的,有一个非常大的限制。那就是分支和合并仅针对模式。因此,您需要将模式迁移与数据迁移分开。使用此功能来运行模式迁移,并针对生产分支单独运行数据迁移。

另一种方法是禁用生产分支上的安全迁移,然后您可以混合模式迁移和数据迁移。完成后,重新启用安全迁移以返回使用安全的模式更改工具。

变更日志

有关最近更改的更多信息,请参阅变更日志

测试

$ composer test

贡献

请参阅贡献指南

注意:X7 Media不再使用PlanetScale进行任何内部或客户数据库,因此我们将不会对此包进行任何更改或积极支持。然而,由于一些用户仍然在生产中依赖它,我们将偶尔审查PR以合并必要的更改,以添加对Laravel未来版本的兼容性支持,或添加功能或错误修复。

安全性

如果您发现任何与安全相关的问题,请通过电子邮件info@x7media.com联系,而不是使用问题跟踪器。

致谢

许可

MIT。有关更多信息,请参阅许可文件