背景: 原来数据库是存放在阿里的rds数据库上的,现在要迁入自己服务器上的数据库上
,使用navicat的数据传输,把整个数据库全部传输到自己数据库服务器上,包括自定义的函数
出现的问题:
1 app上的数据有的显示正常,有的不能显示,比较诡异.
排除:
原来rds数据库上连接时使用的用户名称是dev_x1,所以自定义函数是这样的,导入到新的服务器
上的数据库使用root账号连接的.
原来的自定义函数脚本:
CREATE DEFINER=`dev_x1`@`%` FUNCTION `getLikeNum`(`did` int) RETURNS int(11)
BEGIN
DECLARE reScore INT;
select count(*) into reScore from dynamiclike where dynamicid=did;
RETURN reScore;
END
在新的数据库上没有dev_x1这个用户,所以调用此自定义函数一直出错,把DEFINER=dev_x1
@%
改为
DEFINER=root
@%
后正常
2 还有一部分app上的接口数据不能显示
接口返回说dynamicComment表不存在,在原来数据上执行
select * from dynamicComment 正常,在新的数据库上执行,
数据库直接提示表不存在,噢,知道原因了,新的数据库默认表名称是区别大小写的
修改忽略大小写:
http://blog.csdn.net/wocjj/article/details/7415200
3 有发现新的问题,在app客户端上发布的文章显示乱码,赶紧在服务器上查看数据库的字符:
mysql> show variables like ‘character%’;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set
连接上Mysql后,修改my.cnf
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=’SET NAMES utf8mb4’