dyjysh / compalex
Compalex 是一个轻量级的脚本,用于比较两个数据库模式。它支持 MySQL、MS SQL Server 和 PostgreSQL
Requires
- php: >=5.4.0
This package is not auto-updated.
Last update: 2024-09-14 17:53:42 UTC
README
什么是 Compalex?
Compalex 是一个轻量级的脚本,用于比较两个数据库模式。它支持 MySQL、MS SQL Server 和 PostgreSQL。
尝试 demo 或访问 http://compalex.net/
如何使用
使用 Compalex 最简单的方法是使用 Docker。
您可以使用 Dockerfile 构建自己的容器或使用 Docker Hub 图像
docker run -it -e DATABASE_DRIVER='mysql' \ -e DATABASE_ENCODING='utf8' \ -e SAMPLE_DATA_LENGTH='100' \ -e DATABASE_HOST='host.docker.internal' \ -e DATABASE_PORT='3306' \ -e DATABASE_NAME='compalex_dev' \ -e DATABASE_USER='root' \ -e DATABASE_PASSWORD='password' \ -e DATABASE_DESCRIPTION='Developer database' \ -e DATABASE_HOST_SECONDARY='host.docker.internal' \ -e DATABASE_PORT_SECONDARY='3306' \ -e DATABASE_NAME_SECONDARY='compalex_prod' \ -e DATABASE_USER_SECONDARY='root' \ -e DATABASE_PASSWORD_SECONDARY='password' \ -e DATABASE_DESCRIPTION_SECONDARY='Production database' \ -p 8000:8000 dlevsha/compalex
您需要更改变量以适应您的情况
DATABASE_DRIVER
- 数据库驱动程序,可能的值
mysql
- 用于 MySQL 数据库pgsql
- 用于 PostgreSQL 数据库dblib
- 用于 Microsoft SQL Server 数据库oci
- 用于 Oracle 数据库
DATABASE_HOST
和 DATABASE_HOST_SECONDARY
- 第一和第二个服务器的数据库主机名或 IP 地址
如果您的比较数据库是本地运行的
-
对于 MacOS 和 Windows 用户:在
DATABASE_HOST
和DATABASE_HOST_SECONDARY
参数中使用host.docker.internal
而不是localhost
。因为我们在容器内部运行脚本,所以我们需要使用主机机的 IP 地址进行连接。 -
对于 Linux 用户:使用
--network host
选项并在DATABASE_HOST
和DATABASE_HOST_SECONDARY
参数中使用localhost
。
如果您连接到机器外的数据库(外部 IP),请使用:-e DATABASE_HOST='[您的外部 IP]'
。
DATABASE_PORT
和 DATABASE_PORT_SECONDARY
- 第一和第二个服务器的数据库端口
数据库的默认端口
3306
- MySQL5432
- PostgreSQL1433
- MSSQL1521
- Oracle
DATABASE_NAME
和 DATABASE_NAME_SECONDARY
- 第一和第二个数据库名称
DATABASE_USER
/ DATABASE_PASSWORD
和 DATABASE_USER_SECONDARY
/ DATABASE_PASSWORD_SECONDARY
- 登录和密码以访问您的数据库
DATABASE_DESCRIPTION
和 DATABASE_DESCRIPTION_SECONDARY
- 服务器描述(非必需)。仅用于信息。这些名称将显示为数据库名称。
您还可以使用 docker-compose.yml
。
version: "3.7"
services:
compalex:
image: dlevsha/compalex
container_name: compalex
environment:
- DATABASE_DRIVER=mysql
- DATABASE_ENCODING=utf8
- SAMPLE_DATA_LENGTH=100
- DATABASE_HOST=host.docker.internal
- DATABASE_PORT=3306
- DATABASE_NAME=compalex_dev
- DATABASE_USER=root
- DATABASE_PASSWORD=password
- DATABASE_DESCRIPTION=Developer database
- DATABASE_HOST_SECONDARY=host.docker.internal
- DATABASE_PORT_SECONDARY=3306
- DATABASE_NAME_SECONDARY=compalex_prod
- DATABASE_USER_SECONDARY=root
- DATABASE_PASSWORD_SECONDARY=password
- DATABASE_DESCRIPTION_SECONDARY=Production database
ports:
- "8000:8000"
要求
如果您希望将 Compalex 作为 PHP 脚本使用,请阅读下面的说明。
Compalex 仅支持 PHP 5.4 及以上版本,且需要 PDO 扩展。
安装
$ git clone https://github.com/dlevsha/compalex.git
$ cd compalex
打开 .environment
。您将看到配置参数
[ Main settings ] ; Possible DATABASE_DRIVER: 'mysql', 'pgsql', 'dblib', 'oci'. ; Please use 'dblib' for Microsoft SQL Server DATABASE_DRIVER = mysql DATABASE_ENCODING = utf8 SAMPLE_DATA_LENGTH = 100 [ Primary connection params ] DATABASE_HOST = localhost DATABASE_PORT = 3306 DATABASE_NAME = compalex_dev DATABASE_USER = root DATABASE_PASSWORD = DATABASE_DESCRIPTION = Developer database [ Secondary connection params ] DATABASE_HOST_SECONDARY = localhost DATABASE_PORT_SECONDARY = 3306 DATABASE_NAME_SECONDARY = compalex_prod DATABASE_USER_SECONDARY = root DATABASE_PASSWORD_SECONDARY = DATABASE_DESCRIPTION_SECONDARY = Production database
其中
DATABASE_DRIVER
- 数据库驱动程序,可能的值
mysql
- 用于 MySQL 数据库pgsql
- 用于 PostgreSQL 数据库dblib
- 用于 Microsoft SQL Server 数据库oci
- 用于 Oracle 数据库
[主要连接参数]
和 [次要连接参数]
部分描述了第一和第二个数据库的设置。
其中
DATABASE_HOST
和 DATABASE_HOST_SECONDARY
- 第一和第二个服务器的数据库主机名或 IP 地址
DATABASE_PORT
和 DATABASE_PORT_SECONDARY
- 第一和第二个服务器的数据库端口
默认端口
3306
- MySQL5432
- PostgreSQL1433
- MSSQL1521
- Oracle
DATABASE_NAME
和 DATABASE_NAME_SECONDARY
- 第一和第二个数据库名称
DATABASE_USER
/ DATABASE_PASSWORD
和 DATABASE_USER_SECONDARY
/ DATABASE_PASSWORD_SECONDARY
- 登录和密码以访问您的数据库
DATABASE_DESCRIPTION
和 DATABASE_DESCRIPTION_SECONDARY
- 服务器描述(非必需)。仅用于信息。这些名称将显示为数据库名称。
在 compalex
目录内运行
$ php -S localhost:8000
现在打开您的浏览器并输入 https://:8000/
您将看到两个比较数据库的数据库模式。
您可以在终端中运行此脚本(例如,如果您没有直接连接到数据库)。
我推荐 eLinks(免费基于文本的控制台网络浏览器),因为它支持 HTML 格式化和颜色。
按照上述说明在您的服务器上安装脚本并运行网络服务器。
然后运行
$ elinks https://:8000
您将在终端中看到数据库模式
有时您只有远程数据库服务器的SSH访问权限,无法打开外部连接的端口。在这种情况下,您可以使用SSH端口转发
ssh -L 1522:localhost:1521 [user name]@[remote host 1]
ssh -L 1523:localhost:1521 [user name]@[remote host 2]
此命令将从远程服务器转发1521
端口到本地的1522
和1523
端口。
许可证
版权所有(c)2021,莱夫沙·德米特里
软件按“原样”提供,不提供任何形式的质量保证,无论是明示的还是暗示的,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论基于合同、侵权或其他任何原因,无论是源于、因之或与此软件的使用或其他交易有关。