Inception简介
参考Inception开源GitHub地址:https://github.com/hhyo/inception.git
文档地址:
https://inception-document.readthedocs.io/zh_CN/latest/
Docker
https://hub.docker.com/r/hhyo/inception
利用 Dockerfile 定制Inception镜像
Docker基本使用参考
https://yeasy.gitbooks.io/docker_practice/content/
- 使用centos作为基础镜像
Dockerfile:
1 | FROM docker.io/centos |
- 配置文件inc.cnf
1 | [inception] |
- 构建
1 | docker build -t inception . |
- 启动
1 | docker run --name inception -p 6669:6669 -d inception |
- 通过MySQL客户端镜进行连接
1 | $ mysql -h127.0.0.1 -P6669 |
- 查看变量
1 | mysql> inception get variables; |
Inception使用
基本的测试脚本,验证Inception工作是否正常
1 | #!/usr/bin/python |
web平台archery
archery是一个基于inception的自动化SQL操作平台,支持工单、审核、认证、邮件、OSC等功能。
项目地址:https://github.com/hhyo/archery
实际使用中遇到的问题
日期不支持格式为全0
为了前后端处理方便,业务上面会要求使用全0作为日期的默认值,但是在Inception审核时会报错
1 | CREATE TABLE `test_date` ( |
Invalid default value for column ‘create_time’
参考资料:http://blog.csdn.net/achuo/article/details/54618990
解决方案,修改sql/sql_parse.cc文件,来源:https://github.com/wowkingah/inception/
1 | str_to_time(system_charset_info, res->ptr(), res->length(), <ime, 0, &status); |
TEXT/BLOB类型的列不支持NOT NULL
配置inception_check_column_default_value=1&inception_enable_nullable=0时,创建TEXT/BLOB类型的列并且指定为NOT NULL,审核报错提示cant be not null
审核语句
1 | CREATE TABLE `test_text` ( |
执行结果
TEXT/BLOB Column ‘ramark’ in table ‘test_text’ can’t been not null.
解决方案
修改sql/sql_parse.cc文件
将field->flags & NOT_NULL_FLAG取反
1 | if (!(field->flags & NOT_NULL_FLAG) && mysql_field_is_blob(field->sql_type)) |
新增case ER_TEXT_NIT_NUALLABLE_ERROR
1 | case ER_TEXT_NOT_NULLABLE_ERROR: |
备份语句长度超过限制
解决方案,修改sql/sql_parse.cc文件,text–>longtext
1 | create_sql->append("sql_statement text,"); |
变更字段类型时的默认值问题
原字段
1 | `media_no` bigint(20) NOT NULL DEFAULT '0' COMMENT '字段验证' |
变更语句
1 | ALTER TABLE `inception_text` |
inception审核结果
Invalid default value for column ‘media_no’.
参考