tox*_*lot 21 mysql validation strict
当MySQL允许我插入一个NULL
用它创建的字段时,我感到非常惊讶NOT NULL
.我做了一些研究,发现了如何启用严格模式.但是,我不太清楚MySQL STRICT_ALL_TABLES
启用时的验证.
手册说:
严格模式控制MySQL处理无效或缺失的输入值的方式.由于多种原因,值可能无效.(强调我的)例如,它可能具有错误的数据类型,或者它可能超出范围.
我理解它认为缺少什么以及它如何处理.我不清楚它认为无效.我做了一些测试并发现了以下内容:
NULL
非NULL
列的s 无效TRUE
并且FALSE
似乎总是有效(它们分别变为1和0)除了上面提到的以外,MySQL是否会进行任何其他验证检查?
手册中说"列的数据类型错误",但我发现实际发挥作用的唯一情况是数字字段中的字母.是否有其他数据类型错误的例子?
是否有一个列表确切地检查MySQL执行的是什么?
编辑:为了记录,我的应用程序已经进行了广泛的验证.我使用严格模式作为最后机会,只是在案例检查.如果我忘记检查某些内容,我希望它快速失败而不是"默默地破坏我的数据".
一个很好的资源是检查MySQL源,并mysql-test/t/strict.test
在设置STRICT模式或传统模式(这是STRICT的超集)后阅读以查看他们测试的所有情况.
您进行了出色的研究和测试,但还有一些案例,例如:
此外mysql-test/include/strict_autoinc.inc
,因为当auto-inc值变得太大时,它会测试溢出.
还有一些其他测试文件使用STRICT模式进行特定测试,但我没有检查它们.
归档时间: |
|
查看次数: |
3095 次 |
最近记录: |