mysql复制一个视图是行不通的

时间:2015-07-03 13:37:21

标签: mysql view database-replication percona mysql-5.5

我试图在忽略基表的同时复制mysql slave上的特定视图。 我创建了一个视图,从特定数据库的特定表中选择*。 在slave my.cnf中,我将复制限制为以下内容:

replicate-do-db=DBNAME
replicate-ignore-table=TABLENAME

当我在slave上启动复制时,我收到一个sql错误:

Last_SQL_Error: Error 'TABLENAME 'DBNAME.TABLENAME' doesn't exist' on query. Default database: 'DBNAME'. Query: 'CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `TABLENAMEVIEW` AS SELECT * FROM TABLENAME'

我正在使用mysql 5.5.1,并且根据以下http://dev.mysql.com/doc/refman/5.5/en/replication-features-views.html,即使忽略该表,也可以复制视图。

知道如何解决这个问题吗?

谢谢,

1 个答案:

答案 0 :(得分:2)

如果没有基表,VIEW将无效。您可以忽略复制中的基表,以便不会有新数据,但该表必须存在才能使VIEW正常运行。

MySQL中的VIEW只不过是SELECT语句的简单别名。它们没有具体化,没有数据存储在其中,因此每次从VIEW中选择时都会执行它们的基础SELECT。