ubuntu 16.04系统wordpress-4.9.4修改表引擎报告错误“Invalid default value for 'comment_date'”

最近在捣鼓wordpress主从同步的时候(ubuntu 16.04配置MySQL主从同步),需要把wp_comments的数据库引擎从MyISAM切换到INNODBMyISAM不支持主从同步)。

在执行

的时候报告错误:

原因出在类似这样的建表语句

这种报错多是mysql升级到5.7而引起的默认值不兼容的问题。看看你的字段名是什么,我的是时间字段,类型是datetime。想到可能是类型的默认值被限制了,查看sql_mode。果然:NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数限制时间不能为0

可以使用如下语句查看建表命令:

注意上面的

这两句受到NO_ZERO_IN_DATE,NO_ZERO_DATE的影响。

查看 sql_mode

临时修改:

永久修改:

修改配置文件

[mysqld]下面添加如下列:

参考链接


导入数据库时报错1067 – Invalid default value for ‘字段名’

ubuntu 16.04配置MySQL主从同步

准备工作

1.主从数据库版本最好一致

2.主从数据库内数据保持一致

主数据库:121.199.27.227 /ubuntu 16.04 MySQL 5.7.21 (阿里云

从数据库:182.254.149.39 /ubuntu 16.04 MySQL 5.7.21 (腾讯云

防火墙配置

配置主服务器只允许特定IP访问数据库的端口,避免不必要的攻击。

主库防火墙配置

从库防火墙配置

主数据库master配置

1.修改mysql配置

在[mysqld]部分进行如下修改:

2.修改需要同步的表的引擎为INNODB,只有INNODB支持主从,MyISAM不支持

3.重启mysql,创建用于同步的用户账号

创建用户并授权:用户:repl 密码:slavepass

4.查看master状态,记录二进制文件名(mysql-bin.000001)和位置(333802):

5.主库备份,为从库的第一次数据同步准备数据

使用如下脚本产生数据库备份文件

执行脚本,确保最后输出备份成功

从服务器slave配置

1.修改mysql配置

修改server-id,每个数据库的server-id要求是唯一的,不能相互冲突

2.首次还原数据库:

还原完成后,把数据库设置成只读模式,如果从库可写会出现冲突导致同步失败

添加如下语句:

3.重启mysql,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):

4.启动slave同步进程:

5.查看slave状态:

当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。接下来就可以进行一些验证了,比如在主master数据库的test数据库的一张表中插入一条数据,在slave的test库的相同数据表中查看是否有新增的数据即可验证主从复制功能是否有效,还可以关闭slave(mysql>stop slave;),然后再修改master,看slave是否也相应修改(停止slave后,master的修改不会同步到slave),就可以完成主从复制功能的验证了。

还可以用到的其他相关参数:

master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项:

如之前查看master状态时就可以看到只记录了test库,忽略了manual和mysql库。

注意,偶尔在系统升级的时候,从库可能会丢失同步状态配置。这时候,我们需要重新同步,此时我们从从设备/var/lib/mysql/master.info中找到被中断的同步点。

里面的内容一般如下:

注意mysql-bin.000582下面的4765083就是同步位置,在恢复的时候,就是这两个关键数据。

参考链接


解决WordPress更新提示无法连接到FTP服务器

最近WordPress更新到最新版本之后,更新插件的时候提示如下图所示的错误信息(以前一直使用FTPS更新插件):

观察系统日志,没有发现异常,倒是登陆认证日志出现异常

出现如下内容:

解决方法如下:
WordPress目录下找到wp-config.php文件并编辑,在最后一行加上:

貌似这样操作之后,效率快了很多的样子。

参考链接


在指定的页面中阻止WordPress插入额外换行

众所周知WordPress会对编辑器里的内容再格式化一遍,比如自动分段。但有些时候这些添加的格式反而也会让人很头疼。最近遇到WordPressinput,select,pre前会插入额外的换行即<br>,从而破坏页面样式的问题。

继续阅读在指定的页面中阻止WordPress插入额外换行

ubuntu 16.04上调整使用Innodb存储引擎的MySQL性能

最近WordPress上使用的WP Statistics打开的时候,整个网站都几乎处于卡顿的状态,无法正常访问。

使用top命令发现主要是mysqldCPU占用很高。于是使用mytop分析当前执行的查询语句,发现主要是在查询wp_statistics_visitor表导致的问题(我设置了不要删除浏览记录,因此会导致表内数据偏多)。

大致估计是由于分配给MySQL的内存不足导致频繁的磁盘交换引起的性能问题。

解决方法比较简单,就是增大MySQL可以使用的内存即可。

首先确认服务器上的MySQL使用的存储引擎是否为Innodb(缺省情况下已经是Innodb了):

如果确定是Innodb,则查询Innodb被限制使用的内存大小,如下:

默认情况下是128MB,鉴于内存已经不够了,我们扩大到256MB,这部分内存原则上越大越好,越大与磁盘的交互越少,性能越高。

如下命令调整Innodb的内存:

[mysqld]部分增加(如果存在则修改):

然后重启MySQL服务:

上面的调整之后,性能提升还是比较明显的。

参考链接


让WordPress 4.9支持上传更多文件类型

WordPress对上传的文件类型是有限制的,在这里,我们以在子主题twentyfifteen-child中增加扩展名为.bz2的文件类型为例子。

首先编辑子主题的functions.php文件

在文件尾部增加如下内容:

参考链接


使用Polylang插件让你的WordPress站点支持多语言

如果你的WordPress站点是针对全球用户的,那就很有必要为它添加多语言支持,使用多语言插件Polylang就能很好地实现这个功能。你可以通过Polylang添加所需的语言,然后就可以将网站标题、文章、页面、分类、标签、菜单、小工具等等翻译为多种语言。

该插件可以根据浏览器的语言来自动切换到对应的语言版本。比如你可以像平常一样发布简体中文文章,然后为它添加一个英语版本(英语版的标题和正文内容),那么,如果一个使用英语浏览器的人访问你的网站,就会自动为他显示英语版本的文章。

注:该插件不会自动生成多语言版本的文章,需要你自己翻译

Polylang不仅支持单独的WordPress站点,还支持多站点模式。而且用户可以自己设置网站后台的语言。

参考链接


Ubuntu 16.04 LTS下通过PHP7-FPM配置的服务器增大WordPress文件上传大小限制

一般来说你使用的主机会限制你上传文件的大小,在WordPress的媒体文件上传可以看到,大多数都是2MB。如果是图片的话可能会还够用,但是如果是其他文件就不一定够用了。

增大可以上传的文件大小的话,则执行如下命令

搜索"upload_max_filesize",把默认的2M修改为需要的大小。
搜索"post_max_size",把默认的8M修改为需要的大小。

重启PHP-FPM服务

重新刷新页面,上传文件即可。

移除WordPress-4.7.5自动加载的emoji脚本

WordPress 4.2版本之后,查看网页源代码你会发现WordPress会自动在加载一段用于支持emjo表情的脚本(JS+CSS)。对于大部分人来说,这个是十分鸡肋的功能,反而影响加载速度,仔细观察一下就会发现,这部分功能引入了非常多的脚本以及代码,实际上绝大部分人从来不使用这部分功能,另外这部分加载脚本在Internet Explorer 11 + HTTPS的时候,会出现警告访问不安全的内容,原因就在于emjo加载脚本在HTTPS的情况下依旧会使用HTTP去请求数据。

继续阅读移除WordPress-4.7.5自动加载的emoji脚本