我有一个基于cakephp 1.2.11的web应用程序。以及mysql数据库。在这个应用程序中,我有两个表,即用户和操作。用户有许多操作,用户id(用户表中的id)是操作表中的外键。id字段是autoincrement integer。
cakephp文档说,将id字段设置为char(36)将使cakephp能够为每个记录生成唯一的字符串作为id。
我的应用程序正在运行,我不想丢失我的应用程序已经拥有的数据记录。我需要知道是否可以安全地从autoincrement integer id迁移到char(36)并记住相关的表?
换句话说,我如何将整数值更改为cakephp所做的唯一字符串id?有什么规定吗?如果有任何工具可以自动化这种迁移,我将非常感谢您的帮助。
最佳答案
是的,只需更改表以使用varchar。可以将INT
列转换为char,这样就不会丢失原始的id(最后将同时使用旧的常规int和新的uuid)。您需要确保对任何其他需要存储VARCHAR(36)
的表上的任何外键也进行了更改。
然后确保立即将新代码推送到现场,否则将无法创建新记录,因为varchar字段不能自动递增。
最后,在推送新代码之后,立即清除模型缓存,这样cake就不会认为它是一个INT
。
关于php - 在CakePHP中将ID从自动增量更改为char 36,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13271267/