gpt4 book ai didi

mysql - 联合 - 启用麻烦

转载 作者:行者123 更新时间:2023-11-29 01:44:04 28 4
gpt4 key购买 nike

假设我们有 MySQL 服务器 A,我们需要在其中创建位于服务器 B 上的表的“副本”。

我们没有启用联合。重置服务器 A 会造成很多麻烦,我相信,我们不能在不重置的情况下启用联合。我也认为在B服务器上启用它是不够的(如果我有任何错误请纠正我)

我们还有哪些其他解决方案? mysql 服务器中是否默认启用了某些功能?有什么想法吗?

最佳答案

  • 您需要仅在服务器 B 上启用联合
  • 您可以通过在 B 上创建联合表来访问 A 上的 View
  • 您可以在联合表上执行 INSERT UPDATE DELETE
  • 如果您需要只读权限,您可以限制用户权限

但是!您不能执行任何聚合函数。在将联合的 View 上(例如 COUNT()、MAX()、UNION...)(您可以,但是它会滞后)

  • 请记住在您正在创建的联合表上设置 KEY。 (否则它会非常滞后。)
  • 记得在 View 上使用 ALGORITHM=MERGE
  • 记得在服务器 A 上授予对 USERNAME 的访问权限(来自连接字符串)

服务器 B 上的联合表示例:

delimiter $$
CREATE TABLE `schemaName`.`tableName`(
`keyName` VARCHAR(10) NOT NULL,
`key2Name` DATE DEFAULT '2012-01-01',
KEY `keyName` (`keyName`)
)
ENGINE=FEDERATED
DEFAULT CHARSET=utf8
CONNECTION='mysql://USERNAME:PASSWORD@IPADDRESS:PORTNUMBER/baseSchema/baseTable'
$$

服务器A上的 View :

CREATE
ALGORITHM = MERGE
DEFINER = `ANOTHERUSERNAME`@`%`
SQL SECURITY DEFINER
VIEW `baseSchema`.`baseTable` AS
SELECT
... AS `keyName`,
... AS `key2Name`
FROM
...

关于mysql - 联合 - 启用麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11742193/

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