MySQL模式 Strict Mode知识点详解
I.StrictMode阐述
根据mysql5.0以上版本strictmode(STRICT_TRANS_TABLES)的限制:
1).不支持对notnull字段插入null值
2).不支持对自增长字段插入''值,可插入null值
3).不支持text字段有默认值
看下面代码:(第一个字段为自增字段)
Sql代码
$query="insertintodemovalues('','$firstname','$lastname','$sex')";
上边代码只在非strict模式有效。
Code代码
$query="insertintodemovalues(NULL,'$firstname','$lastname','$sex')";
上边代码只在strict模式有效。把空值''换成了NULL.
II.让数据库支持StrictMode
1.对数据库结构进行以下改进来支持strictmode:
1)给所有notnull字段都设置非null默认值,字符串默认值为'',数值默认值为0,日期默认值为'0000-00-0000:00:00'
2)去掉text字段的默认值
3)规范化改进:把title字段统一改为varchar(255),把有默认值的null字段改为notnull字段
2.如果安装的PHP程序数据库结构关闭Strictmode
1).一个是安装mysql5.0(含以上)版本的时候去掉strictmode。
编辑my.cnf,关闭StrictMode:
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
2).另一个就是修改查询语句。例如在
if($this->dbcharset){ @mysql_query("SETNAMES".$this->dbcharset); }
后面执行
mysql_query("SET@@sql_mode=''");
注意确定你使用的是MySQL5
mysqli方式类似,就是执行的是
mysqli_query($this->connection_id,"SET@@sql_mode=''");
到此这篇关于MySQL模式StrictMode知识点详解的文章就介绍到这了,更多相关MySQL模式StrictMode内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。