Невозможно выполнить миграцию при использовании существующей базы данных - PullRequest
1 голос
/ 14 апреля 2020

Я использую Django3 и Python3 с последней версией для изучения Django.

Я хочу использовать существующую базу данных sqlite3 для моего django проекта. Но у меня возникли проблемы, когда я использовал команду migrate.

Пока я сделал очень мало шагов к своему проекту:

1. использую venv, обновить pip , установить django,

2. создать проект,

3. вставить приложение и добавить его в INSTALLED_APPS,

4. В settings.py я добавил существующую базу данных в DATABASES следующим образом.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },

    'testdb': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'TestDB.sqlite3'),
    },
}
Затем я использую метод, как показано ниже, для создания файла models.py. Использование существующей базы данных в Django

Сгенерированный models.py выглядит следующим образом: (где я добавил max_length=25)

from django.db import models


class Stars(models.Model):
    actorname = models.CharField(db_column='ActorName', blank=True, null=True, max_length=25)
    realname = models.CharField(db_column='RealName', blank=True, null=True, max_length=25)

    class Meta:
        managed = False
        db_table = 'Stars'

6. Затем я запускаю python manage.py migrate и / или python manage.py makemigrations, здесь я вижу следующие ошибки:

    (venv) PS D:\Workfolder_Web\testProject\backend\project> python .\manage.py migrate
    Traceback (most recent call last):
    File ".\manage.py", line 21, in <module>
        main()
    File ".\manage.py", line 17, in main
        execute_from_command_line(sys.argv)
    File "D:\Workfolder_Web\testProject\backend\venv\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line 
        utility.execute()
    File "D:\Workfolder_Web\testProject\backend\venv\lib\site-packages\django\core\management\__init__.py", line 377, in execute
        django.setup()
    File "D:\Workfolder_Web\testProject\backend\venv\lib\site-packages\django\__init__.py", line 24, in setup
        apps.populate(settings.INSTALLED_APPS)
    File "D:\Workfolder_Web\testProject\backend\venv\lib\site-packages\django\apps\registry.py", line 114, in populate
        app_config.import_models()
    File "D:\Workfolder_Web\testProject\backend\venv\lib\site-packages\django\apps\config.py", line 211, in import_models
        self.models_module = import_module(models_module_name)
    File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
    File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
    File "<frozen importlib._bootstrap>", line 991, in _find_and_load
    File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
    File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
    File "<frozen importlib._bootstrap_external>", line 779, in exec_module
    File "<frozen importlib._bootstrap_external>", line 916, in get_code
    File "<frozen importlib._bootstrap_external>", line 846, in source_to_code
    File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
    ValueError: source code string cannot contain null bytes

7. Моя база данных TestDB.sqlite3 очень просто, это выглядит так: enter image description here

Вопрос: Как мне его отладить? Я не использую bootstrap, URL-адреса, представления или маршрутизаторы в моих текущих кодах.

Спасибо за помощь!

1 Ответ

0 голосов
/ 17 апреля 2020

Если вы изменили Модели, вы либо добавите значение по умолчанию для новых полей, либо удалите базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...