MySQL主从复制“未知数据库”错误

时间:2014-11-12 01:56:54

标签: mysql database replication master-slave

我试图在CentOS上的2个mysql服务器之间设置主从复制。一旦设置,如果我创建一个名为' fakeDB'在主机上它在从机上创建它。真棒!但是,如果我然后尝试在主服务器上创建一个表,我会在slave上遇到这个错误:

Last_Errno: 1049
Last_Error: Error 'Unknown database 'fakeDB'' on query. Default database: 'fakeDB'. Query: 'create table tmp (name varchar(100))'

但是数据库存在于奴隶上!然后我开始在两台服务器上创建数据库和tmp表。我重置了所有内容然后尝试在主服务器上插入一行。然后我在奴隶上得到了这个错误:

Last_SQL_Errno: 1146
Last_SQL_Error: Error 'Table 'fakeDB.tmp' doesn't exist' on query. Default database: 'fakeDB'. Query: 'insert into tmp values ('asdf')'

但同样存在该数据库,两台服务器上的表也存在。我可以手动访问它们。以下是我在两台服务器上的my.cnf文件中设置的变量。

server-id = 1 #set as 2 for master
log_bin = /var/lib/mysql/mysql-bin.log
relay-log  = /var/lib/mysql/mysql-relay-bin.log
binlog_do_db = fakeDB

我做错了什么?

1 个答案:

答案 0 :(得分:3)

确定。我想到了。原来这是愚蠢的事情。我在slave上的配置文件中设置了此选项:

lower_case_table_names=1

因此,当我在主服务器上创建数据库为fakeDB时,它在服务器上创建了fakedb。所以在slave上我可以发出use fakeDB;并且它可以正常工作,因为命令不区分大小写,但是从master发出的查询不是因为insert into fakeDB.tmp失败,因为数据库名称是{{1} }。