Mysql数据库版本、引擎、字符集不一致,导致drupal9站迁移失败

  网站在本地开发完成后,向服务器迁移时,远程数据库出现了不兼容的提示,大概意思是数据库引擎、编码之类的问题,进而引起网站迁移失败。
 
  白龙网本地开发是用phpstudy集成环境LNMP,程序是用开源框架drupal9最新版,运行起来没有任何压力,速度还非常快。检查之后,发现数据库是mysql8.0.12版本、引擎是MyIsam、字符集是utf8;另外通过navicat连接本地数据库后,发现数据库的字符集是latin,排序规则是latin1_general_ci。
 
  服务器使用的阿里云的国内虚拟主机,通过控制台进入虚拟主机后,发现数据库是mysql5.7版本;使用navicat工具连接至远程数据库后,“右键——>数据库属性”的下拉菜单中显示,远程数据库的字符集是utf8mb4--UTF-8Unicode、排序规则是utf8mb4_general_ci;在information_schema下的表中显示,数据库使用的引擎是INNODB。
 
  根据数据库迁移失败的原因,通过多种方法查阅、对比本地数据库与远程数据库之间的差异,最终确定是由于数据库版本、所用引擎、字符集、排序规则等参数不同,造成了本地数据库在向远程数据库迁移时失败。
 
  因此,在开发网站之前,首先要检查本地开发环境是否与远程服务器环境一致。尤其是LNMP是否一致,重点检查php版本与mysql的版本、引擎、字符集、排序规则。如果不同,在新建数据库空间时,要先选好数据库版本,数据库引擎、字符集、排序规则等。
 
  目前,主流的数据库版本是5.7,引擎是INNODB,字符集是utf8mb4--UTF-8Unicode、排序规则是utf8mb4_general_ci。建议本地数据库配置上述参数。

        这是白龙网在使用phpstudy搭建开发环境、迁移网站时遇到的问题,特别明显的是,由于本地数据库与远程数据库引擎等参数的不同,导致本地数据表无法复制到远程服务器。另外,实操中发现,wamp的开发环境与阿里云虚拟主机的部署环境大体上是一致的,尤其是数据库,都是5.7版本的。但是,PHP需要配置到7.0以上,或者8.0版本。