2019-05-08 18:06
@糊搞 嗯,对,这是个梗。哎对了,根据你这个原理, 还可以使用模版函数也可以达到这样的效果。在公共的模版地方增加一个 :
#define paradef(val, defVal)
#if(val) #para(val) #else #para(defVal) #end
#end
使用的时候 #@paradef(START_DATE, '1000-01-01 00:00:00')
这个肯定可以
2019-04-30 17:46
@JFinal 以前学习EOVA @Jieven 老师的项目,了解了MySQL的information_schema数据库。以及里面的:
SCHEMATA表
---SCHEMATA表提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。
TABLES表
---TABLES表提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间,等等信息。是show tables from schemaname的结果取之此表。
这两个表, 根据这两个表, 就能比对数据库的差异。 根据差异生成对应SQL。就能做到为平台多租户的SaaS客户实现全库升级。轻轻松松实现上百个库同时升级。而ActiveRecordPlugin天然支持任何连接,不限制是否是一台机器,也就支持了操作集群数据库的骚操作了
2019-04-30 15:41
我有几个项目就是用的动态建库以及更新数据库, 因为是传统项目改造过去的。 所以一个客户就是一个数据库。这样就产生了很多数据库, 数据库结构都一样。 升级功能和维护表结构的时候, 就需要同步处理所有的库。 手动处理是不能的。就是利用 Db.use(xx).update去执行各种sql, 增删改查。
如果项目是 Db + Record 的话, ActiveRecordPlugin 启动后,是不用管的,是天然动态的。
如果是Model的话,ActiveRecordPlugin 需要重启的,先关闭再开启一下就可以了, 或者代码处理一下 Mapping 那个管理类,详细去看源码,不多,加起来只有几百行