1
10
更新:50个字符的限制 is now 255 在Django 1.8 —— 原始答案: 今天下午我也遇到了,我有一个解决办法(差不多)。 这个 post here 暗示这是一个django错误,与auth_权限允许的值的长度有关。进一步挖掘支持这个想法,就像 this Django ticket (尽管它最初与MySQL相关)。 基本上,权限名称是基于模型的详细名称加上描述性权限字符串创建的,并且可能溢出到auth.model s.permission.name中允许的50个字符以上。 引用对Django门票的评论:
一种解决方案是黑客攻击该列以支持50个字符(我说,最好是通过南部迁移,这样可以很容易地重复),但我能想到的最快、最可靠的解决方案是简单地缩短超长的详细名称定义(从详细名称中的47个字符到大约20个字符)。现在一切正常。 |
2
8
好吧,区别在于模板数据库的编码。在生产服务器上,他们使用的是ASCII编码,而在dev框上则是UTF-8。 默认情况下,Postgres使用模板1创建数据库。我的理解是,如果它的编码不是UTF-8,那么您创建的数据库就会有这个问题,即使您使用UTF-8编码创建它。 因此,我删除了它,并将其编码设置为utf8重新创建了它。下面的代码段是这样做的(摘自 here ):
现在夹具可以顺利加载。 |
3
2
在两个系统上获取真正的SQL查询,看看有什么不同。 |
4
1
仅供参考:我也有这个错误
似乎我在为一个字段写超过10个限制的数据。我把一个字符场的大小从10增加到20 我希望它有帮助。 |
5
1
正如@stevejalim所说,列auth-auth-permission.name很可能是长度50的问题,您可以在postgres的shell中使用\d+auth-permission来验证这一点。在我的例子中,这是个问题,因此当我加载django模型的fixture时,我得到了databaseerror:值太长,无法改变类型字符(50),然后更改django.contrib.auth的权限模型很复杂,所以…简单的解决方案是在权限模型上执行迁移,我是在运行
学分 this comment |
6
1
您可以通过在使用Django创建数据库表之前对模型进行修补,使其使用更长的字段。在“manage.py”中,更改:
到:
这将修改前面字段上的选项(例如)
|
donefun · 在PHP中将波兰语字符存储为变量 2 年前 |
AFX · 这是AES密钥的有效字节字符串吗? 6 年前 |
jubimk4 · UTF-8中的PUPPET无效字节序列 6 年前 |
user3286053 · utf-8在列表中搜索单词 6 年前 |