mysql / schematic
一个简单的PHP MySQL迁移管理工具,可以自动创建和更新数据库,无需使用内置ORM函数。
Requires
- php: >=5.3.2
- symfony/console: v2.5.6
- symfony/yaml: *
Requires (Dev)
- phpunit/phpunit: 3.7.*
README
不再维护
由于Schematic从未真正完整地完成所有我想要的功能,我将它暂时搁置,如果有人想成为新的积极贡献者,请告诉我。然而,我现在转向Laravel作为我的主要框架,Laravel迁移已经取代了Schematic。
数据库迁移工具,允许以易于设置的方式在持续集成环境中轻松维护数据库。
###使用Composer在本地上安装
{
require: {
"mysql/schematic": "1.*.*"
}
}
###全局安装
- 运行以下命令
下载PHAR文件
wget --no-check-certificate https://github.com/andrefigueira/Schematic/raw/master/schematic.phar
使PHAR包可执行
chmod +x schematic.phar
将其移动到用户bin文件夹
mv schematic.phar /usr/local/bin/schematic
然后使用Schematic
schematic
Schematic现在将全局可用!
###模式格式
模式定义在模式文件中,这些文件必须存储在模式文件夹中的json文件中,表示它们所对应的表,例如(确保在项目的根目录中创建模式文件夹)
~/ProjectFolder/schemas/table_name.yaml
模式文件包含创建或修改数据库所需的所有数据库配置,请看下面的示例。
在当前版本中,您需要始终传递一个类型和null,您在类型字段中传递长度时放在括号内。
Schematic使用所有基础MySQL值,所以您只需将它们放入此文件即可使用,如果拼写错误,它将停止运行并抛出异常。
###示例模式
schematic:
name: Schematic
version: 1.4.5
database:
general:
name: schematic
charset: utf8
collation: utf8_general_ci
engine: InnoDB
tables:
hello_world:
fields:
id:
type: int(11)
'null': false
unsigned: true
autoIncrement: true
index: 'PRIMARY KEY'
client_id:
type: int(24)
'null': false
unsigned: true
autoIncrement: false
name:
type: varchar(128)
'null': false
unsigned: false
autoIncrement: false
rename: full_name
description:
type: varchar(256)
'null': false
unsigned: false
autoIncrement: false
created_date:
type: datetime
'null': false
unsigned: false
autoIncrement: false
注意,目前仅添加外键,但不删除。如果创建了一个具有约束的新数据库,则必须运行更新两次以添加约束。
用法
schematic [options] command [arguments]
选项
--help -h 显示此帮助信息。
--quiet -q 不输出任何消息。
--verbose -v|vv|vvv 增加消息的详细程度:1为普通输出,2为更详细输出,3为调试
--version -V 显示此应用程序的版本。
--ansi 强制ANSI输出。
--no-ansi 禁用ANSI输出。
--no-interaction -n 不询问任何交互式问题。
可用命令
help 显示命令的帮助信息
list 列出命令
迁移
migrations:execute 根据JSON模式文件执行数据库迁移
migrations:generate 生成数据库模式JSON文件
migrations:mapping 根据现有数据库生成数据库模式
脚本还会创建所有数据库变更的日志。