2013-01-14 32 views
0

我在模型中聲明爲TextField而數據庫中是LONGTEXT的列中出現此錯誤,而我試圖插入的值只有3KB長。 AFAIK LONGTEXT理論上的限制是2GB,所以我不知道爲什麼限制或者如何繞過它。有任何想法嗎?MySQL中Django的列數據太長

具體例外,我得到的是:

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") 

這是內容的一個例子導致錯誤:

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的「 - 」之前的一些數字其實是在出現+ - 用UTF-8編碼的特殊字符

+0

你能舉一個你插入文本的例子嗎?數據庫是如何編碼的(例如/ latin1,utf-8),因爲這可能會產生影響。 – timc

+0

如果你做'INSERT IGNORE',會發生什麼? –

+0

根據錯誤,列類型爲「text」而非「longtext」,「text」的最大大小爲64KB。很顯然你的有效載荷長度超過64KB。 –

回答

1

確保您的數據實際上是UTF8編碼的。列真的是utf8

如果不是,MySQL可能會引發此錯誤。您可以通過執行INSERT IGNORE聲明並查看插入到數據庫中的內容來測試(除其他外)。

您可以檢查information_schematable, column and database以查看是否屬於這種情況。