dyjysh/compalex

Compalex 是一个轻量级的脚本,用于比较两个数据库模式。它支持 MySQL、MS SQL Server 和 PostgreSQL

安装: 42

依赖项: 0

建议者: 0

安全性: 0

星标: 433

关注者: 18

分支: 121

开放问题: 6

类型:项目

0.4.0 2015-12-17 14:35 UTC

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_HOSTDATABASE_HOST_SECONDARY - 第一和第二个服务器的数据库主机名或 IP 地址

如果您的比较数据库是本地运行的

  • 对于 MacOSWindows 用户:在 DATABASE_HOSTDATABASE_HOST_SECONDARY 参数中使用 host.docker.internal 而不是 localhost。因为我们在容器内部运行脚本,所以我们需要使用主机机的 IP 地址进行连接。

  • 对于 Linux 用户:使用 --network host 选项并在 DATABASE_HOSTDATABASE_HOST_SECONDARY 参数中使用 localhost

如果您连接到机器外的数据库(外部 IP),请使用:-e DATABASE_HOST='[您的外部 IP]'

DATABASE_PORTDATABASE_PORT_SECONDARY - 第一和第二个服务器的数据库端口

数据库的默认端口

  • 3306 - MySQL
  • 5432 - PostgreSQL
  • 1433 - MSSQL
  • 1521 - Oracle

DATABASE_NAMEDATABASE_NAME_SECONDARY - 第一和第二个数据库名称

DATABASE_USER / DATABASE_PASSWORDDATABASE_USER_SECONDARY / DATABASE_PASSWORD_SECONDARY - 登录和密码以访问您的数据库

DATABASE_DESCRIPTIONDATABASE_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_HOSTDATABASE_HOST_SECONDARY - 第一和第二个服务器的数据库主机名或 IP 地址

DATABASE_PORTDATABASE_PORT_SECONDARY - 第一和第二个服务器的数据库端口

默认端口

  • 3306 - MySQL
  • 5432 - PostgreSQL
  • 1433 - MSSQL
  • 1521 - Oracle

DATABASE_NAMEDATABASE_NAME_SECONDARY - 第一和第二个数据库名称

DATABASE_USER / DATABASE_PASSWORDDATABASE_USER_SECONDARY / DATABASE_PASSWORD_SECONDARY - 登录和密码以访问您的数据库

DATABASE_DESCRIPTIONDATABASE_DESCRIPTION_SECONDARY - 服务器描述(非必需)。仅用于信息。这些名称将显示为数据库名称。

compalex 目录内运行

$ php -S localhost:8000

现在打开您的浏览器并输入 https://:8000/

您将看到两个比较数据库的数据库模式。

Database Compare Panel

您可以在终端中运行此脚本(例如,如果您没有直接连接到数据库)。

我推荐 eLinks(免费基于文本的控制台网络浏览器),因为它支持 HTML 格式化和颜色。

按照上述说明在您的服务器上安装脚本并运行网络服务器。

然后运行

$ elinks https://:8000

您将在终端中看到数据库模式

Database schema in terminal

有时您只有远程数据库服务器的SSH访问权限,无法打开外部连接的端口。在这种情况下,您可以使用SSH端口转发

ssh -L 1522:localhost:1521 [user name]@[remote host 1]
ssh -L 1523:localhost:1521 [user name]@[remote host 2]

此命令将从远程服务器转发1521端口到本地的15221523端口。

许可证

版权所有(c)2021,莱夫沙·德米特里

软件按“原样”提供,不提供任何形式的质量保证,无论是明示的还是暗示的,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论基于合同、侵权或其他任何原因,无论是源于、因之或与此软件的使用或其他交易有关。