异常信息: a unique database constraint for 2 or more fields together 场景描述: 对于ORM中多对多关系的中间表,如果该关系表是手动创建的,建表的时候,两个字段没有添加联合唯一约束: 系统运行一段时间后,若是需求变更,需要对其增加联合唯一约束,而当前的关系表中可能已存在重复数据了,那么在添加联合唯一约束,执行数据同步操作migrate的时候,就会报错:这时,可以参考这种处理方式. 推荐一篇博客:http://shineforever.b…
表结构 FIELD          TYPE          COLLATION       NULL    KEY     DEFAULT  Extra           PRIVILEGES            COMMENT -------------  ------------  --------------  ------  ------  -------  --------------  --------------------  ------- id            …
今天在学习laravel的路由模型绑定时,在按照文档执行php artisan migrate时报错. In Connection.php line 664: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(…
错误如下: 执行:php artisan migrate时报错: [PDOException]SQLSTATE[HY000] [2002] Connection refused 解决办法: 第一步:.env文件下host配置错了,应该是虚拟上的mysql,所以host=192.168.10.10 第二步:执行 php  artisan config:clear 第三部:执行 php artisan  migrate…
Django中model部分的写法, 参见 unique-together 部分文档. class MyModel(models.Model): field1 = models.CharField(max_length=50) field2 = models.CharField(max_length=50) class Meta: unique_together = ('field1', 'field2',) 对应到 MySQL 中的 SQL , 类似如下的语句 CREATE UNIQUE IN…
今天在数据迁移时突然报了 Specified key was too long error 的错,解决掉之后就把这个问题记录下来. 报错原因 Laravel 5.4 +  默认使用 utf8mb4 字符编码,之前使用的是 utf8 编码 我mysql数据库使用的是 utf8 编码,支持的最大字符长度为3字节,如果遇到4字节的宽字符就会出现插入异常. 注意:三个字节 utf8 最大能编码的 Unicode 字符是 0xffff ,即Unicode中的基本多文种平面(BMP).因而包括Emoji表情…
Laravel 5.4默认使用utf8mb4字符编码,而不是之前的utf8编码.因此运行php artisan migrate 会出现如下错误: [Illuminate\Database\QueryException] SQLSTATE[]: Syntax error or access violation: Specified key was too bytes (SQL: alter table users add unique users_email_unique(email)) [PDO…
产生原因: 这个问题只会在开发的时候遇到,而且配置是写入到setting.py配置文件,我们定义了日志文件大小,当日志满了的时候,这时候就会遇到这个问题, 因为在使用Pycharm运行django的时候我们启用两个进程都会去初始化setting.py配置,一个是我们正常访问的,一个是监控代码变化的(你会发现你每次修改一些代码,django会自己重新构建,就是这个进程完成的),由于都占有着文件的句柄,所以在归档的时候失败了 解决方法: 方法一: 启动django时加上 --noreload参数 如…
unique_together解释 nique_together 这个元数据是非常重要的一个!它等同于数据库的联合约束! 举个例子,假设有一张用户表,保存有用户的姓名.出生日期.性别和籍贯等等信息.要求是所有的用户唯一不重复,可现在有好几个叫“张伟”的,如何区别它们呢?(不要和我说主键唯一,这里讨论的不是这个问题) 我们可以设置不能有两个用户在同一个地方同一时刻出生并且都叫“张伟”,使用这种联合约束,保证数据库能不能重复添加用户(也不要和我谈小概率问题).在Django的模型中,如何实现这种约束…
非空约束:设置列时,可为空默认可为空,去掉对号之后设置数据不可为空: 唯一约束:在键中设置,唯一约束名称.类型Unique.列名:设置应用完成之后,此列数据具有唯一性:即数据不可重复(类型:Unique) 主键约束:主键列自动具有非空约束和唯一约束的属性,一个表只能有一个主键(类型:Primary)自动生成索引,提高查询效率 外键约束:两个表之间的约束关系:表与表之间的对应(类型:Foreign)…