php技术博客

记录php相关学习知识及开发示例、疑难问题等

详解mysql中的严格模式和非严格模式

今天在排查一个程序bug中发现,有一个sql写入的数据跟数据库中记录的不一致。通过排查,突然想起来可能是数值类型的问题,果真如此。字段设置的为tinyint(4),当写入超过127的数值后,数据库中都为记录为127。帮这个字段改为int(10)类型。改为之后,我思考,超过数值范围的提示错误或记录错误就可以避免这种问题了。通过搜索知道了mysql中有严格模式与非严格模式。下面详细介绍。何为MySQL的严格模式,简单来说就是MySQL自身对数据进行严格的校验(格式、长度、类型等),比如一个整型字段我们写入一个字符串类型的数据,在非严格模式下MySQL不会报错,同样如果定义了char或varchar类型的字段,当写入或更新的数据超过了定义的长度也不会报错。我认为这个对于编程来说没有任何好处,虽然我们尽量在代码中做数据校验。MySQL开启了严格模式从一定程序上来讲是对我们代码的一种测试,如果我们的开发环境没有开启严格模式在开发过程中也没有遇到错误,那么在上线或代码移植的时候将有可能出现不兼容的情况,因此在开发过程做最好开启MySQL的严格模式。1、如何查看当前使用的模式可以执行sql语句sel

Centos7下mysql数据库root账号密码忘记如何重置找回

mysql数据库root账号密码忘记了,如何重置密码了。linux中方法很简单:(1)、第一步,在mysql配置文件my.cnf中(默认的地址为/etc/my.cnf,需要根据具体的配置找对应的配置文件),[mysqld]下面新建一行添加skip-grant-tables保存文件,然后重启mysqld服务,可以执行命令 service mysqld restart(2)、使用mysql命令连接本地的mysql服务,可以执行命令mysql -u root -p这是不需要输入密码,输入换行就能进入(3)、执行更新密码的sql语句。mysql5.7版本及以上版本,执行语句update mysql.user set authentication_string=password('123456') where user='root';mysql5.7以下版本执行语句update mysql.user set password=password('123456') where user='root';ps:其中123456为新的密码,