com.jukusoft/php-database-table-upgrader

php-database-table-upgrader,自动升级 MySQL 表结构的数据库升级工具。您不再需要编写 CREATE TABLE、ALTER TABLE 等查询,只需在 PHP 中配置表结构,类将自动升级表结构。

0.0.1 2016-08-14 14:47 UTC

This package is not auto-updated.

Last update: 2024-09-20 07:14:43 UTC


README

自动升级 MySQL 表结构的数据库升级工具

版本:0.0.1 alpha 许可证:LGPL 3.0

当前升级尚未完全集成,但表创建应该可以工作。正在进行中!

要求

  • PHP 7.0.8+
  • MySQL 5.7+

配置

如果您想使用内置的 MySQLDriver,您需要将 config/mysql.examplecfg.php 复制到 mysql.cfg.php 并更改值。

支持的数据类型

  • INT
  • VARCHAR
  • TEXT
  • CHAR
  • TINYTEXT
  • MEDIUMTEXT
  • LONGTEXT (4294967295 个字符)
  • BIT
  • BINARY
  • TINYINT
  • SMALLINT
  • MEDIUMINT
  • BIGINT
  • DECIMAL
  • NUMERIC
  • DOUBLE
  • FLOAT
  • REAL
  • BLOB
  • TINYBLOB
  • MEDIUMBLOB
  • LONGBLOB
  • ENUM
  • SET
  • DATE
  • TIME
  • YEAR
  • TIMESTAMP
  • DATETIME
  • JSON

支持的关键和索引

  • PRIMARY KEY

  • INDEX

  • UNIQUE

  • SPATIAL

  • FULLTEXT

  • FOREIGN KEY

  • 更多正在进行中

示例

生成 CREATE TABLE 查询

//create or upgrade test table
$table = new DBTable("test", $dbDriver);
$table->setEngine("InnoDB");
$table->setCharset("utf8");

//add int coloum
$table->addInt("id");

//add int coloum with length 10, NOT NULL and AUTO_INCREMENT
$table->addInt("testint", 10, true, true);

//add varchar column
$table->addVarchar("test_text", 255, true, "default value");

//add text column
$table->addText("text");

//print CREATE statement for debugging
echo $table->generateCreateQuery();

输出以下查询

CREATE TABLE `{DBPRAEFIX}test` IF NOT EXISTS (
`id` INT,
`testint` INT(10) NOT NULL AUTO_INCREMENT,
`test_text` VARCHAR(255) NOT NULL DEFAULT 'default value',
`text` TEXT
) TYPE=InnoDB DEFAULT CHARSET=utf8;

如何添加 PRIMARY KEY

仅一个列的 PRIMARY

//add primary key
$table->addPrimaryKey("column_name");

多个列的 PRIMARY KEY

//add primary key
$table->addPrimaryKey(array("id", "testint"));

因为 PRIMARY KEY 有限制特定的长度,您也可以指定 PRIMARY KEY 中使用的列的长度

//add primary key
$table->addPrimaryKey(array("id", "testint", array('column' => "test_text", 'length' => 50)));