[PHP] Laravel 体现 MySQL、Sqlite 数据的大小写敏感
要想实现数据比对的大小写敏感,方式是设置数据库字段类型 或者 字段校验字符集。
MySQL 和 Sqlite 所支持的 collations 形式是不同的,你可以通过以下文档了解到。
MySQL collations :https://dev.mysql.com/doc/refman/5.7/en/charset-binary-collations.html
Sqlite collations:https://www.sqlite.org/datatype3.html(7. Collating Sequences)
MySQL 可以分别对 服务器、数据库、表、字段 的字符校验进行设置。
MySQL 要开启数据大小写敏感的时候,如果不想全局设置,那么可以对具体字段选择 collations,简述如下:
二进制字符(BINARY,VARBINARY,BLOB)有一个 binary 的 collation。
非二进制字符(CHAR,VARCHAR,TEXT)的 collation 是字符集加 _bin 后缀,比如 utf8mb4_bin。
在 Laravel 的单元测试中,一般会使用 Sqlite 的内存数据库进行数据存储测试,简单快速。
<server name="DB_CONNECTION" value="sqlite"/>
<server name="DB_DATABASE" value=":memory:"/>
基础 TestCase 初始化中,一般是需要执行 migrate 创建表的,这样才能进行后面的数据库功能测试。
所以,一种方式是,在 migration 文件中对 DB_CONNECTION 进行判定,执行对应驱动的 ·字段· 或者 ·collation· 设置 。
public function up()
{
if (env('DB_CONNECTION') == 'mysql') {
Schema::table('tags', function (Blueprint $table) {
$table->string('name', )->collation('utf8mb4_bin')->change();
});
} else if (env('DB_CONNECTION') == 'sqlite') {
// For phpunit sqlite driver
Schema::table('tags', function (Blueprint $table) {
$table->binary('name')->change();
});
} else { }
}
Other Article:https://www.cnblogs.com/paul8339/p/6932138.html
Link:https://www.cnblogs.com/farwish/p/11993040.html
[PHP] Laravel 体现 MySQL、Sqlite 数据的大小写敏感的更多相关文章
- Python mysql sqlite 数据没有更新
原因 MySQL事务隔离级别 解决方案 conn.commit() conn.close()
- mysql <-> sqlite
在做程序时,sqlite数据很方便.用mysql数据导出到sqlite的步骤:(用csv文件过渡) ------------------------------- 先导出到csv文件 ------ ...
- 关于PDF.NET开发框架对Mysql Sqlite PostgreSQL数据库分页支持的个人看法
关于PDF.NET开发框架的名字由来 在设计www.pwmis.com站点的时候,考虑到架构的兼容性和将来升级的可能性,最重要的是没有足够的时间去为网站添加和维护很多复杂的程序,所以在借鉴前人成功经 ...
- 关于mysql插入数据异常
今天创建数据库时,在插入数据时出现了几个问题.(首次在LInux环境下创建数据库) 一个是关于SQL Error [1146] [42S02]: Table 'struts2exec.s_user' ...
- 利用Flume将MySQL表数据准实时抽取到HDFS
转自:http://blog.csdn.net/wzy0623/article/details/73650053 一.为什么要用到Flume 在以前搭建HAWQ数据仓库实验环境时,我使用Sqoop抽取 ...
- 【sqlite】VS2013中C#读取SQLite数据
从“火车采集器”(免费版)中获取的网页数据,本地只能自动保存为SQLite数据,(在工具-数据转换中切换).收费版还可以用MySql.SqlServer 今天就记录一下C#读取Sqlite数据 创建一 ...
- seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案
seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案 说明: 之所以只用nacos进行了注册与发现,因为seata使用naco ...
- UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?
选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...
- mysql 插入数据失败防止自增长主键增长的方法
mysql设置了自增长主键ID,插入失败的那个自增长ID也加一的,比如失败5个,下一个成功的不是在原来最后成功数据加1,而是直接变成加6了,失败次数一次就自动增长1了,能不能让失败的不增长的? 或者说 ...
随机推荐
- 《团队名称》第八次团队作业:Alpha冲刺day1
项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十二 团队作业8-软件测试与ALPHA冲刺 团队名称 快活帮 作业学习目标 (1)掌握 ...
- 使用python处理selenium中的获取元素属性
# 获取我的订单元素class属性值 get_class_name = driver.find_element_by_link_text('我的订单').get_attribute('class') ...
- 分析脚本搭建docker环境:python, R
1. 搭建Anaconda Python3.6 FROM nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04 MAINTAINER Tyan <tyan.liu.g ...
- Game-Based Learning Is Changing How We Teach. Here's Why.
https://www.edsurge.com/news/2019-02-04-game-based-learning-is-changing-how-we-teach-here-s-why This ...
- Python下编写Windows自动化测试软件
https://www.jianshu.com/p/be3c46c7a905 uiautomation模块学习笔记 前段时间,由于个人需要,在网上查找了一些关于Windows平台下自动化测试的资料,最 ...
- Codeforces 1038 D. Slime
[传送门] 其实就是这些数字前面能加正负号,在满足正负号均出现的情况下价值最大.那么就可以无脑DP$f[i][j][k]$表示到了第$i$位,正号是否出现($j$.$k$为$0$或$1$)能得到的最大 ...
- ES6 let 和const
一.var 的缺陷:var 只有全局作用域和函数作用域,没有块级作用域,除了在函数内部的变量默认都属于window var foo='hello'; fn=function(){ var foo='w ...
- python3 安装 pillow报错
前言 最近要使用pillow库, 来训练验证码模型, 但是死活都安装不上 环境 docker中安装, python3 尝试安装 pip install pillow easy_install Pill ...
- swap file "*.swp" already exists!的解决方法
Linux下编程难免要开启多个vim共同编辑同一个文件,这时再次保存就会出现: swap file "*.swp" already exists! [O]pen Read-Only ...
- sharding-jdbc使用笔记
核心概念: 1.逻辑表:水平拆分的数据库(表)的相同逻辑和数据结构表的总称.例,根据主键尾数拆分为10张表,分别是t_order_0到t_order_9,他们的逻辑表名为t_order 2.真实表:在 ...