点击(此处)折叠或打开
-
mysql> show slave status\G
-
*************************** 1. row ***************************
-
Slave_IO_State:
-
Master_Host: 10.241.19.124
-
Master_User: rep
-
Master_Port: 3306
-
Connect_Retry: 60
-
Master_Log_File: mysql-bin.000098
-
Read_Master_Log_Pos: 58200422
-
Relay_Log_File: mysqld-relay-bin.000005
-
Relay_Log_Pos: 418698836
-
Relay_Master_Log_File: mysql-bin.000092
-
Slave_IO_Running: No
-
Slave_SQL_Running: No
-
Replicate_Do_DB: pwchain
-
Replicate_Ignore_DB:
-
Replicate_Do_Table:
-
Replicate_Ignore_Table:
-
Replicate_Wild_Do_Table:
-
Replicate_Wild_Ignore_Table:
-
Last_Errno: 1305
-
Last_Error: Error 'FUNCTION pwchain.f_sequence does not exist' on query. Default database: 'pwchain'. Query: 'INSERT INTO nb_user(adminAccountID,netbid,userType,userName,password,setupTm,updateTm) SELECT f_sequence(1300),'3301080062',1,'admin','4QrcOUm6Wau+VuBX8g+IPg==',1397460800060,1397460800060 FROM dual WHERE NOT EXISTS (SELECT * FROM nb_user WHERE netbid='3301080062' AND userName='admin') limit 1'
-
Skip_Counter: 0
-
Exec_Master_Log_Pos: 418698691
-
Relay_Log_Space: 1556378144
-
Until_Condition: None
-
Until_Log_File:
-
Until_Log_Pos: 0
-
Master_SSL_Allowed: No
-
Master_SSL_CA_File:
-
Master_SSL_CA_Path:
-
Master_SSL_Cert:
-
Master_SSL_Cipher:
-
Master_SSL_Key:
-
Seconds_Behind_Master: NULL
-
Master_SSL_Verify_Server_Cert: No
-
Last_IO_Errno: 0
-
Last_IO_Error:
-
Last_SQL_Errno: 1305
-
Last_SQL_Error: Error 'FUNCTION pwchain.f_sequence does not exist' on query. Default database: 'pwchain'. Query: 'INSERT INTO nb_user(adminAccountID,netbid,userType,userName,password,setupTm,updateTm) SELECT f_sequence(1300),'3301080062',1,'admin','4QrcOUm6Wau+VuBX8g+IPg==',1397460800060,1397460800060 FROM dual WHERE NOT EXISTS (SELECT * FROM nb_user WHERE netbid='3301080062' AND userName='admin') limit 1'
- 1 row in set (0.00 sec)
点击(此处)折叠或打开
-
mysql> show create FUNCTION pwchain.f_sequence\G
- ERROR 1305 (42000): FUNCTION f_sequence1 does not exist
-
再登录主数据,查看
点击(此处)折叠或打开
-
sql> show create FUNCTION pwchain.f_sequence\G
-
*************************** 1. row ***************************
-
Function: f_sequence
-
sql_mode: STRICT_TRANS_TABLES
-
Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `f_sequence`(itype int) RETURNS int(11)
-
begin declare oid int; update sequence set id = id + 1 where idtype = itype; select id into oid from sequence where idtype = itype; return oid; end
-
character_set_client: utf8
-
collation_connection: utf8_general_ci
-
Database Collation: utf8_general_ci
- 1 row in set (0.00 sec)
此时,其实已经有了解决的方法,就是在从库上手动创建一个 pwchain.f_sequence 这个函数就可以。
但为什么 pwchain.f_sequence 这个函数在从库上没有被创建呢?
查阅的相关资料,发现函数及存储过程的定义都是放在 information_shcema 库的routines 这种表中的。
主库:
点击(此处)折叠或打开
-
mysql> select * from information_schema.ROUTINES\G
-
*************************** 1. row ***************************
-
SPECIFIC_NAME: f_sequence
-
ROUTINE_CATALOG: NULL
-
ROUTINE_SCHEMA: pwchain
-
ROUTINE_NAME: f_sequence
-
ROUTINE_TYPE: FUNCTION
-
DTD_IDENTIFIER: int(11)
-
ROUTINE_BODY: SQL
-
ROUTINE_DEFINITION: begin declare oid int; update sequence set id = id + 1 where idtype = itype; select id into oid from sequence where idtype = itype; return oid; end
-
EXTERNAL_NAME: NULL
-
EXTERNAL_LANGUAGE: NULL
-
PARAMETER_STYLE: SQL
-
IS_DETERMINISTIC: NO
-
SQL_DATA_ACCESS: CONTAINS SQL
-
SQL_PATH: NULL
-
SECURITY_TYPE: DEFINER
-
CREATED: 2012-05-25 00:15:27
-
LAST_ALTERED: 2012-05-25 00:15:27
-
SQL_MODE: STRICT_TRANS_TABLES
-
ROUTINE_COMMENT:
-
DEFINER: root@localhost
-
CHARACTER_SET_CLIENT: utf8
-
COLLATION_CONNECTION: utf8_general_ci
-
DATABASE_COLLATION: utf8_general_ci
-
*************************** 2. row ***************************
-
SPECIFIC_NAME: p_clearscore
-
ROUTINE_CATALOG: NULL
-
ROUTINE_SCHEMA: pwchain
-
ROUTINE_NAME: p_clearscore
-
ROUTINE_TYPE: PROCEDURE
-
DTD_IDENTIFIER: NULL
-
ROUTINE_BODY: SQL
-
ROUTINE_DEFINITION: BEGIN
-
DECLARE l_memid,b INT;
-
DECLARE cur1 CURSOR FOR select id from mem_memberbaseinfo where uniqueid in(memids);
-
DECLARE CONTINUE HANDLER FOR NOT FOUND SET b=1;
-
SET b=0;
-
OPEN cur1;
-
REPEAT
-
FETCH cur1 INTO l_memid;
-
IF b<>1 THEN
-
update mem_memberaccount set score=0,remainscore=0 where id=l_memid;
-
END IF;
-
UNTIL b=1
-
END REPEAT;
-
CLOSE cur1;
-
update mem_curmemberinfo set score=0,remainscore=0 where uniqueid in(memids);
-
END
-
EXTERNAL_NAME: NULL
-
EXTERNAL_LANGUAGE: NULL
-
PARAMETER_STYLE: SQL
-
IS_DETERMINISTIC: NO
-
SQL_DATA_ACCESS: CONTAINS SQL
-
SQL_PATH: NULL
-
SECURITY_TYPE: DEFINER
-
CREATED: 2012-05-24 22:41:37
-
LAST_ALTERED: 2012-05-24 22:41:37
-
SQL_MODE:
-
ROUTINE_COMMENT:
-
DEFINER: root@localhost
-
CHARACTER_SET_CLIENT: utf8
-
COLLATION_CONNECTION: utf8_general_ci
- DATABASE_COLLATION: utf8_general_ci
从库:
点击(此处)折叠或打开
-
mysql>select * from information_schema.ROUTINES\G
- Empty set (1.34 sec)
点击(此处)折叠或打开
-
mysql> stop slave;
-
Query OK, 0 rows affected, 1 warning (0.00 sec)
-
-
mysql>
-
mysql> delimiter $$
-
mysql> CREATE DEFINER=`root`@`localhost` FUNCTION `f_sequence`(itype int)
-
-> RETURNS int(11)
-
-> begin
-
-> declare oid int;
-
-> update sequence set id = id + 1 where idtype = itype;
-
-> select id into oid from sequence where idtype = itype;
-
-> return oid;
-
-> end$$
-
Query OK, 0 rows affected (0.01 sec)
-
-
mysql> show slave status\G
-
*************************** 1. row ***************************
-
Slave_IO_State: Waiting for master to send event
-
Master_Host: 10.241.19.124
-
Master_User: rep
-
Master_Port: 3306
-
Connect_Retry: 60
-
Master_Log_File: mysql-bin.000098
-
Read_Master_Log_Pos: 58913321
-
Relay_Log_File: mysqld-relay-bin.000005
-
Relay_Log_Pos: 418746091
-
Relay_Master_Log_File: mysql-bin.000092
-
Slave_IO_Running: Yes
-
Slave_SQL_Running: Yes
-
Replicate_Do_DB: pwchain
-
Replicate_Ignore_DB:
-
Replicate_Do_Table:
-
Replicate_Ignore_Table:
-
Replicate_Wild_Do_Table:
-
Replicate_Wild_Ignore_Table:
-
Last_Errno: 0
-
Last_Error:
-
Skip_Counter: 0
-
Exec_Master_Log_Pos: 418745946
-
Relay_Log_Space: 1557091344
-
Until_Condition: None
-
Until_Log_File:
-
Until_Log_Pos: 0
-
Master_SSL_Allowed: No
-
Master_SSL_CA_File:
-
Master_SSL_CA_Path:
-
Master_SSL_Cert:
-
Master_SSL_Cipher:
-
Master_SSL_Key:
-
Seconds_Behind_Master: 1814763
-
Master_SSL_Verify_Server_Cert: No
-
Last_IO_Errno: 0
-
Last_IO_Error:
-
Last_SQL_Errno: 0
-
Last_SQL_Error:
- 1 row in set (0.00 sec)
错误恢复!
Ps:其实造成这个报错的原因应该是在开始配置主从的时候只配置 pwchain 数据库,没对information_schema 数据库进行同步配置,导致从库找不到相应的信息