4

上記の警告が表示されます

行 1 の列 'username' のデータが切り捨てられました

モデルの最初にリストされたフィールドとして「ユーザー名」を使用して、モデル「suserprofile」に対してこれを取得しています

モデルのフィールドの順序を変更すると(「email_id」フィールドをモデルのリストの最初に変更)、「username」を置き換える警告が表示されますモデルで最初に言及したフィールド (この場合は email_id) を使用します。

syncdb を実行しているときにこの警告は表示されませんが、実際にローカル ブラウザーを実行して、django を使用して、views.py ファイルのモデル ("suserprofile") に新しいオブジェクトを保存しようとしているときにのみ警告が表示されます。なぜそれが起こっているのか理解できません

編集:

私のモデル:

class SUserProfile(models.Model):
    email_id            = models.EmailField(max_length=30)
    username      = models.CharField(max_length=50,blank=True)  
    first_name          = models.CharField(max_length=30)
    last_name           = models.CharField(max_length=30)

私の見解

from django.allauth.models import SocialAccount
def profileview(request):
    user=request.user   
    if user.is_authenticated:
        a=SocialAccount.objects.filter(user=user)   
        try:    
            f=a.get(provider='facebook')
        except:
            f=None
    if f:
        fusername=f.get_provider_account    
        fdata=f.extra_data 
        ffirst_name=fdata['first_name']     
        flast_name=fdata['last_name']
        femail=fdata.get('email')
        try: 
            old_user=SUserProfile.objects.get(email_id=femail)
        except:
            new_user=SUserProfile( 
            username=fusername,
            email_id=femail,
            first_name=ffirst_name,
            last_name=flast_name,)
            new_user.save() 

ブラウザの実行時に表示される警告の詳細:

 Exception Type:    Warning

 Exception Value:   Data truncated for column 'email_id' at row 1

 Exception Location:/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py in _warning_check, line 92

Traceback Switch to copy-and-paste view

usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response

       response = callback(request, *callback_args, **callback_kwargs)

...

▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/contrib/auth/decorators.py in _wrapped_view

       return view_func(request, *args, **kwargs)

...

▶ Local vars
/home/varun/webops/mysite/allauth/account/views.py in profileview

       new_user.save()

...

▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/base.py in save

self.save_base(using=using, force_insert=force_insert, force_update=force_update)

...

▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/base.py in save_base

result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)

...

▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py in _insert

       return insert_query(self.model, objs, fields, **kwargs)

...

▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/query.py in insert_query

    return query.get_compiler(using=using).execute_sql(return_id)

...

 ▶ Local vars
 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py in execute_sql

    cursor.execute(sql, params)

...

 ▶ Local vars
 /usr/local/lib/python2.7/dist-packages/django/db/backends/util.py in execute

    return self.cursor.execute(sql, params)

...

▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py in execute

    return self.cursor.execute(query, args)

...

▶ Local vars
/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py in execute

    if not self._defer_warnings: self._warning_check()

...

▶ Local vars
/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py in _warning_check

     warn(w[-1], self.Warning, 3)

...

▶ Local vars 
4

2 に答える 2

8

列の形式と長さを確認してください。長さが10のvarchar列に20文字の文字列データを挿入すると、同じエラーが発生しました。

于 2013-06-20T05:29:04.093 に答える
4

syncDB は、既存のテーブル/列の定義を上書きしません。したがって、ファイルの長さが正しいことを確認済みである場合は、テーブルを再作成したかどうかを確認することをお勧めします。更新された列定義を配置するには、テーブルを削除して再作成する必要があります (私はこのエラーを自分で数回行いました)

于 2013-07-20T21:03:47.373 に答える