Ошибка Python MySQL Docker: неизвестная база данных с именем main при миграцииPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка Python MySQL Docker: неизвестная база данных с именем main при миграции

Сообщение Anonymous »

Я пытаюсь перенести изменения Python в свой проект Docker, однако, когда я пытаюсь запустить команду python Manage.py dbmigrate, я получаю сообщение об ошибке: неизвестная база данных 'main', однако когда Я заглядываю в свой файл docker-compose.yml и вижу, что main действительно определен внутри переменной MYSQL_DATABASE внутри контейнера db. Я попробовал некоторые решения, найденные в StackOverflow, а также Github, например, перезапуск: всегда из моего сценария docker-compose.yml и создание сценария Windows PowerShell, который будет запускаться для перезапуска моего контейнера докера, как показано здесь: MYSQL Контейнер Docker выдает ошибку «неизвестная база данных» и пытается изменить мою переменную DATA_SAVE_PATH и другие подобные переменные в моем docker-compose.yml: https://github.com/laradock/laradock/issues/1017, и у меня есть также попытался изменить переменную MYSQL_DATABASE на другое имя, но это тоже не работает.
Вот полная ошибка, которую я получаю при запуске своего кода:< /p>

Код: Выделить всё

sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (1049, "Unknown database 'main'")
(Background on this error at: http://sqlalche.me/e/13/e3q8)
Вот мой скрипт docker-compose.yml:

Код: Выделить всё

version: '3.9'
services:
backend:
build:
context: .
dockerfile: Dockerfile
ports:
- 8001:5000
volumes:
- .:/app
depends_on:
- db

db:
image: mysql:5.7.22
restart: always
environment:
MYSQL_DATABASE: main
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
volumes:
- .dbdata:/var/lib/mysql
ports:
- 33067:3306
Вот мой Dockerfile:

Код: Выделить всё

FROM python:3.9
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app
CMD python main.py
Вот мой файл main.py:

Код: Выделить всё

from flask_cors import CORS
from sqlalchemy import UniqueConstraint
from vegaaimain.vegamain import main
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql://root:root@db/main'
CORS(app)

db = SQLAlchemy(app)

class VegaScriptRun(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=False)
title = db.Column(db.String(200))
description = db.Column(db.String(400))
image = db.Column(db.String(200))
main()

class VegaScriptUser(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer)
title = db.Column(db.String(200))
description = db.Column(db.String(400))
image = db.Column(db.String(200))

UniqueConstraint('user_id', 'title', 'description', 'image', name='user_experiment_unique')
@app.route('/')
def index():
return 'Hello'

if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
И, наконец, мой файл Manage.py и файл require.txt:

Код: Выделить всё

from main import app, db
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager

migrate = Migrate(app, db)

manager = Manager(app)
manager.add_command('db', MigrateCommand)

if __name__ == '__main__':
manager.run()
requirements.txt

Код: Выделить всё

Flask==1.1.2
Flask-SQLAlchemy==2.4.4
SQLAlchemy==1.3.20
Flask-Migrate==3.0.0
Flask-Script==2.0.6
Flask-Cors==3.0.9
requests==2.25.0
mysqlclient==2.0.1
pika==1.1.0
wolframalpha==5.0.0
Что именно я здесь упускаю или делаю не так, спасибо!

Подробнее здесь: https://stackoverflow.com/questions/710 ... -migrating
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»