Дистрибутивный проект Django работает по-разному с локальным проектом, получить 1366, "Ошибка неверного строкового значения - PullRequest
0 голосов
/ 12 июня 2018

Дистрибутивный проект Django работает по-разному с локальным проектом.У меня есть проект Django, в нем есть создание APIView, в моем локальном репо, он работает нормально, но когда я перенесу репо на удаленный, затем запустите его с

screen -d -m python3 -m Qy.wsgi

, и если я получаю доступ к URL-адресу создания, появляется ошибка 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


РЕДАКТИРОВАТЬ-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

Я установил DEBUG=True в settings.py, и при редактировании я получил ошибку ниже(аналогично использованию create):

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 голосов
/ 13 июня 2018

Я вижу вашу ошибку 1366, "Incorrect string value:.

Произошла известная ошибка ошибки кодировки.

Итак, убедитесь, что ваша база данных и таблица используют utf-8 набор символов.

вы можете использовать

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

, проверять и изменять набор символов базы данных.

используйте ниже для проверки и изменения набора символов таблицы:

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...