背景: 原来数据库是存放在阿里的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’
陆陆通通 认证博客专家 老程序员 十三年软件行业从业经验,获得过2次极客软件创意比赛大奖。摆过地摊,开过公司,在这里分享日常的所思所想,和大家一起提升成长。公众号《陆陆通通》。