gpt4 book ai didi

mysql workbench 禁用定义器

转载 作者:行者123 更新时间:2023-11-29 02:22:25 31 4
gpt4 key购买 nike

我一直在 linux 中使用 mysql,因为他们有 mysql workbench,可以加快开发速度。

它有很好的同步方法。现在我自己的电脑,测试服务器,开发服务器三个数据库用于开发。

使用同步方法将表从一台服务器更新到另一台服务器很容易,但对于触发器、过程(例程)、事件和函数来说就像 hell 。

对于上述类型的 mysql workbench,每当您创建或更改它时,它都会自动添加“DEFINER”内容,当然每个服务器中的内容都会有所不同。由于在同步过程中,我必须手动编辑,否则它总是会失败。选择选项“忽略检查定义器”也不起作用。

我不喜欢使用 mysqldump,因为我无法自动生成更改,在开发过程中每次都创建“ALTER”命令是有问题的。网络上有一些工具,但它引入了新的问题而不是解决一个问题。

对于每次更新其他服务器之前的功能和例程,我只是登录到 mysql 控制台并运行它

update mysql.proc set definer = '' where db = <my db>

然后这将在 mysql workbench 中更新我的模型并删除所有定义器字符串。但是对于触发器,没有简单的方法,我无法更新 INFORMATION_SCHEME.TRIGGERS,因为它只是一个类似表的 View 。

我有 50 多个表,每个表有 1-2 个触发器。一个一个编辑是浪费时间。我更喜欢只为所有人使用一种工具。

也许我们可以在 mysql workbench 中禁用这个功能?

最佳答案

如果你想使用 mysql workbench 来简化开发,我找到了答案

  1. 始终使用模型来创建或更改您的任何数据库项目,然后将其同步到每个来源。
  2. 不要写 definer = user 东西,而是使用 definer = CURRENT_USER() 并让 mysql 服务器自行定义它。
  3. 永远不要从源同步回模型,因为它会使用源更新定义器。

通过上述方法可以轻松实现mysql实例之间的同步

关于mysql workbench 禁用定义器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29543375/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com