分发Django项目与本地项目运行不同,得到1366,“错误的字符串值错误

时间:2018-06-12 16:12:11

标签: python django django-rest-framework

Django项目的分发与本地项目不同。 我有一个Django项目,其中有一个创建APIView,在我的本地仓库中,它工作正常,但当我将回购推送到遥控器时,然后用

运行它

screen -d -m python3 -m Qy.wsgi

如果我访问了创建网址,则出现500 Server Error错误。

但是在我当地的回购中,它运作正常。

相关代码如下:

模型:

class Currency(models.Model):

    name = models.CharField(max_length=16)
    desc = models.CharField(max_length=128, null=True, blank=True)
    standard_symbol = models.CharField(max_length=8)
    ex_rate = models.DecimalField(decimal_places=4, default=0.0000, max_digits=10)

    class Meta:
        ordering = ['-standard_symbol']

    def __str__(self):
        return self.name
    def __unicode__(self):
        return self.name

apiview:

class CurrencyCreateAPIView(CreateAPIView):

    serializer_class = CurrencySerializer
    permission_classes = [IsSuperAdminOrFinanceAdmin]
    queryset = Currency.objects.all()

串行器:

 class CurrencySerializer(ModelSerializer):

    class Meta:
        model = Currency
        fields = "__all__"

我只是不知道为什么在发行版中它不能用汉字创作。

我的意思是如果我写所有数字,例如:

name: 123, desc: 123, standard_symbol: 123, ex_rate:1233

它将创造成功。

或者如果有英文字符也可以,但如果有汉字,它会报告500 Server Error。我使用MySQL作为数据库。

但是在本地仓库中,如果它包含中文字符,它将起作用。

远程仓库代码与本地仓库相同。

我的本​​地回购操作系统:MacOS
我的远程仓库操作系统:CentOS7.2

EDIT-1

wsgi.py的设置如下:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "qy.settings")

import django

print("django.setup()")
django.setup()

from socketio import Middleware
from qysio.views import sio

django_app = get_wsgi_application()
application = Middleware(sio, django_app)



import eventlet
import eventlet.wsgi
eventlet.wsgi.server(eventlet.listen(('', 8000)), application)  

修改-2

我在settings.py中设置DEBUG=True,编辑时出现波纹管错误(与使用创建相同):

OperationalError at /api/productconfig/price_system/currency/1/edit/
(1366, "Incorrect string value: '\\xE4\\xBA\\xBA\\xE6\\xB0\\x91...' for column 'name' at row 1")

1 个答案:

答案 0 :(得分:0)

我看到了您的错误1366, "Incorrect string value:

有一个着名的charset错误错误。

因此,请确保您的数据库和表使用utf-8字符集。

你可以使用

SHOW CREATE DATABASE your_database_name;
ALTER DATABASE your_database_name DEFAULT CHARACTER SET utf8;  

检查并更改数据库字符集。

使用bellow进行检查并更改表格的字符集:

SHOW CREATE TABLE your_table_name;
ALTER TABLE your_table_name DEFAULT CHARACTER SET utf8;

并更改您的表字段字符集:

ALTER TABLE `your_table_name` CHANGE `table_field` `table_field ` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL