要想实现数据比对的大小写敏感,方式是设置数据库字段类型 或者 字段校验字符集。

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 数据的大小写敏感的更多相关文章

  1. Python mysql sqlite 数据没有更新

    原因 MySQL事务隔离级别 解决方案 conn.commit() conn.close()

  2. mysql <-> sqlite

    在做程序时,sqlite数据很方便.用mysql数据导出到sqlite的步骤:(用csv文件过渡) -------------------------------  先导出到csv文件  ------ ...

  3. 关于PDF.NET开发框架对Mysql Sqlite PostgreSQL数据库分页支持的个人看法

    关于PDF.NET开发框架的名字由来  在设计www.pwmis.com站点的时候,考虑到架构的兼容性和将来升级的可能性,最重要的是没有足够的时间去为网站添加和维护很多复杂的程序,所以在借鉴前人成功经 ...

  4. 关于mysql插入数据异常

    今天创建数据库时,在插入数据时出现了几个问题.(首次在LInux环境下创建数据库) 一个是关于SQL Error [1146] [42S02]: Table 'struts2exec.s_user' ...

  5. 利用Flume将MySQL表数据准实时抽取到HDFS

    转自:http://blog.csdn.net/wzy0623/article/details/73650053 一.为什么要用到Flume 在以前搭建HAWQ数据仓库实验环境时,我使用Sqoop抽取 ...

  6. 【sqlite】VS2013中C#读取SQLite数据

    从“火车采集器”(免费版)中获取的网页数据,本地只能自动保存为SQLite数据,(在工具-数据转换中切换).收费版还可以用MySql.SqlServer 今天就记录一下C#读取Sqlite数据 创建一 ...

  7. seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案

    seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案 说明: 之所以只用nacos进行了注册与发现,因为seata使用naco ...

  8. UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?

    选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...

  9. mysql 插入数据失败防止自增长主键增长的方法

    mysql设置了自增长主键ID,插入失败的那个自增长ID也加一的,比如失败5个,下一个成功的不是在原来最后成功数据加1,而是直接变成加6了,失败次数一次就自动增长1了,能不能让失败的不增长的? 或者说 ...

随机推荐

  1. getLog(this.getClass()) 与 getLog(XXX.class) 的区别

    在实例方法中引用Log,通常定义一个实例变量: // 在实例方法中引用Log: public class Person { protected final Log log = LogFactory.g ...

  2. Mac下用java代码调用adb命令时出错

    原本我直接这样写: Process process=Runtime.getRuntime().exec("adb devices"); 但是运行时出错: java.io.IOExc ...

  3. pandas IO

    pd.read_csv("../data/user_info.csv", index_col="name") #假设csv里包含这几列: name, age, ...

  4. Windows GUI自动化测试技术的比较和展望

    https://www.cnblogs.com/yufun/archive/2009/10/10/1580132.html [这里的自动化测试专指GUI自动化(不包含Web)] 以前写过一篇跟UI自动 ...

  5. vcenter监控

    在vcenter上配置好用户名密码和url即可使用自动发现自动发现vmware

  6. [RN] React Native 封装选择弹出框(ios&android)

    之前看到react-native-image-picker中自带了一个选择器,可以选择拍照还是图库,但我们的项目中有多处用到这个选择弹出框,所以就自己写了一下,最最重要的是ios和Android通用. ...

  7. Linux 系统管理——系统安全及应用

    chagen -d 0 ____用户名:下次登录时必须修改密码 ctrl+R:查看历史记录 history:查看历史记录 清除历史记录: >.bash _history echo“”>.b ...

  8. ModuleNotFoundError: No module named 'suit'

    ModuleNotFoundError: No module named 'suit' pip3. install suit

  9. 干货收藏 | Java 程序员必备的一些流程图

    阅读本文大概需要 6 分钟. 转载自:https://juejin.im/post/5d214639e51d4550bf1ae8df 1.Spring 的生命周期 Spring 作为当前 Java 最 ...

  10. Unknown command 'run' - try 'help'

    /******************************************************************************* * Unknown command ' ...