django.db.utils.DataError: (1406, "Data too long for column 'location' at row 1")

    (cmm_owms) [root@usasvr2 a9FriendFinder]# supervisorctl restart friend_task
    friend_task: ERROR (not running)
    friend_task: ERROR (abnormal termination)
    (cmm_owms) [root@usasvr2 a9FriendFinder]# supervisorctl start friend_task
    friend_task: ERROR (abnormal termination)
    (cmm_owms) [root@usasvr2 a9FriendFinder]# tailf app/tasks/myapp.log 
    Tue, 07 Apr 2020 15:45:11 app_task.py[line:275] INFO friend: start gps&recommender task...
    ^C
    (cmm_owms) [root@usasvr2 a9FriendFinder]# tailf /var/log/a9//friend_task.log 
        result.read()
      File "/root/python/venv/cmm_owms/lib/python3.6/site-packages/pymysql/connections.py", line 1075, in read
        first_packet = self.connection._read_packet()
      File "/root/python/venv/cmm_owms/lib/python3.6/site-packages/pymysql/connections.py", line 684, in _read_packet
        packet.check_error()
      File "/root/python/venv/cmm_owms/lib/python3.6/site-packages/pymysql/protocol.py", line 220, in check_error
        err.raise_mysql_exception(self._data)
      File "/root/python/venv/cmm_owms/lib/python3.6/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
        raise errorclass(errno, errval)
    django.db.utils.DataError: (1406, "Data too long for column 'location' at row 1")
    ^C
    (cmm_owms) [root@usasvr2 a9FriendFinder]# 
    問題已經打印得比較清楚了,就是mysql db的字段:location不夠長。要寫入的city字符串長度超過了db定義的長度。
    用下面的方法來解決,加斷言,加try catch()語言捕獲異常。
            try:
            # we save the data to mysql as gps-log-record for check
            log_item = LogUserLocation()
            log_item.user_id = user_id
            log_item.gps_lat = gps_lat
            log_item.gps_lon = gps_lon
            assert (len(str(live_data['city'])) < 800)
            log_item.location = live_data['city']
            log_item.save()
        except Exception as e:
            logging.error("e4=" + repr(e))
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章