简体   繁体   English

数据太长,无法在MySQL上的Django中列

[英]Data too long for column in Django on MySQL

I'm getting this error for a column that in the model is declared as TextField and in the database is a LONGTEXT, and the value I'm trying to insert is only 3KB long. 我在模型中声明为TextField且数据库中为LONGTEXT的列出现此错误,而我尝试插入的值只有3KB长。 AFAIK LONGTEXT theoretical limit is 2GB, so I don't know why the limitation or how to get around it. AFAIK LONGTEXT的理论上限为2GB,所以我不知道为什么要限制或如何解决。 Any ideas? 有任何想法吗?

The specific exception I get is: 我得到的具体异常是:

  File "C:\Projetos\iapyx\servers\itese2\views\documents.py", line 46, in create
    self._saveItem(item)

  File "C:\Projetos\iapyx\servers\itese2\views\documents.py", line 59, in _saveItem
    doc.save()

  File "C:\Python27\lib\site-packages\django\db\models\base.py", line 460, in save
    self.save_base(using=using, force_insert=force_insert, force_update=force_update)

  File "C:\Python27\lib\site-packages\django\db\models\base.py", line 553, in save_base
    result = manager._insert(values, return_id=update_pk, using=using)

  File "C:\Python27\lib\site-packages\django\db\models\manager.py", line 195, in _insert
    return insert_query(self.model, values, **kwargs)

  File "C:\Python27\lib\site-packages\django\db\models\query.py", line 1436, in insert_query
    return query.get_compiler(using=using).execute_sql(return_id)

  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 791, in execute_sql
    cursor = super(SQLInsertCompiler, self).execute_sql(None)

  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 735, in execute_sql
    cursor.execute(sql, params)

  File "C:\Python27\lib\site-packages\django\db\backends\util.py", line 34, in execute
    return self.cursor.execute(sql, params)

  File "C:\Python27\lib\site-packages\django\db\backends\mysql\base.py", line 89, in execute
    return self.cursor.execute(query, args)

  File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)

  File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue 

   DatabaseError: (1406, "Data too long for column 'text' at row 1")

This is an example of content that causes the error: 这是导致错误的内容示例:

But is this the case across nations? Does increasing creativity necessarily lead to increased economic inequality? To get at this, we examine the relationship between the GCI and a standard measure of income inequality—the Gini Index. Exhibit 19 shows the relationships between income inequality and the GCI overall as well as each of the 3 T indices that comprise it. While this may come as a surprise for those familiar with the case of the United States, we find that the GCI is in fact systematically associated with lower levels of socio-economic inequality—and hence greater equality—across the nations of the world. Each and every one of the correlations between the GCI and the Gini is negative. The correlation between inequality and the overall GCI is −0.43. The Gini is also quite negatively associated with Technology (− 0.47) and Talent (−0.52) but much less so with Tolerance (− 0.06 and not statistically significant). This last is a bit surprising as one might expect more tolerant societies to be more equal on balance. That said, we believe the overall finding of a negative association between creativity and inequality to be an important one, for it implies that the general trajectory of economic development is associated with lower levels of inequality. Exhibit 20 is a scatter-graph which plots the association between the Gini measure of income inequality and the GCI for the nations of the world. The fit is not especially good and there are lots of countries above and below the line. This suggests that there are two distinctive paths for high creativity countries. On the one hand, there are countries like the United States, the United Kingdom, Singapore, and to a lesser extent, Australia and New Zealand, where high levels of creativity, productivity and economic competitiveness go hand in hand with higher levels of inequality. But there are also a substantial number of countries where high levels of creativity, competitiveness and productivity combine with much lower low levels of inequality. These are largely Scandinavian and Northern

European countries, including Sweden, Denmark, Finland, Norway, the Netherlands, and Germany. Japan is represented as well. Among the less developed nations, we find high levels of inequality in South American nations like Paraguay, Bolivia, Panama, Brazil, Honduras, Ecuador, and Argentina. Of the BRIC nations, China, Russia and particularily Brazil all exhibit much higher levels of inequality than their GCI scores would predict. There appears to be two distinct paths available to high creative development: for every high-creativity, high-inequality nation there is a high-creativity, low-inequality counterpart. This is a likely reflection of these countries’ differing levels of social welfare. Though more systematic study is needed before we can draw any firm conclusions, this finding gives us reason for optimism; at the same time, it suggests that sustainable, long-term prosperity requires a significant investment in education and skill development. This is the topic to which we now turn.

The GCI and Human Development
What is the connection between creativity and human development? To get at this, we explore the association between the GCI and the United Nations’ Human Development Index [27]. “People often value achievements that do not show up at all, or not immediately,

The GCI and inequality (correlations)

Exhibit 19

Talent

Tolerance

Technology

Global Creativity Index

−0.6

−0.4

−0.2

0.0

Correlation with Income Inequality

22 | Creativity and Prosperity: The 2010 Global Creativity Index

NB the '-' that appears before some numbers is in fact the +- special char, encoded in UTF-8 注意,在某些数字之前出现的“-”实际上是+-特殊字符,以UTF-8编码

Make sure that your data is actually UTF8 encoded. 确保您的数据实际上是UTF8编码的。 Is the column really utf8 ? 专栏真的是utf8吗?

If it isn't, MySQL might raise this error. 如果不是,MySQL可能会引发此错误。 You can test this (among other things) by doing an INSERT IGNORE statement and looking at what is inserted into the database. 您可以通过执行INSERT IGNORE语句并查看插入到数据库中的内容来对此进行测试。

You can check the information_schema for the table, column and database to see if this is the case. 您可以检查表,列和数据库information_schema ,以查看是否为这种情况。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM