Превышено максимальное количество пользовательских подключений в python/flask/mysqlPython

Программы на Python
Anonymous
Превышено максимальное количество пользовательских подключений в python/flask/mysql

Сообщение Anonymous »

Я пытаюсь запустить приложение Python/Flask/MySQL, но всякий раз, когда я пытаюсь его запустить (используя команду «python -m flask run»), выдает следующую ошибку:

mysql.connector.errors.ProgrammingError: 1226 (42000): Пользователь [имя пользователя] превысил ресурс «max_user_connections» (текущее значение: 10)

Но я еще даже не пытался установить какие-либо связи. Мне очень хочется это исправить, так как я включу это приложение в свой порт.
Поскольку произошла эта ошибка, я попробовал добавить в свой код блоки try/Exception/else/finally для уничтожения соединений, но это по-прежнему не работает.
Вот пример кода, включая настройку моей базы данных:

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

from flask import Flask, redirect, render_template, request, session
from flask_session import Session
from tempfile import mkdtemp
from werkzeug.security import check_password_hash, generate_password_hash
from helpers import login_required, check_available_chars
import mysql.connector.pooling

app = Flask(__name__)

app.config["TEMPLATES_AUTO_RELOAD"] = True

app.config["SESSION_FILE_DIR"] = mkdtemp()
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
app.secret_key = [secret key]
app.config["SESSION_PERMANENT"] = True
app.config["SESSION_TYPE"] = "filesystem"
Session(app)

cnxpool = mysql.connector.pooling.MySQLConnectionPool(
pool_name="name",
pool_size=10,
autocommit=True,
user=[user name],
password=[password],
host=[host],
database=[database]
)

@app.route("/login", methods=["GET", "POST"])
def login():

"""Log user in"""

# Forget any user_id
session.clear()

# User reached route via POST (as by submitting a form via POST)
if request.method == "POST":

# Ensure username was submitted
if not request.form.get("businessName"):
return render_template("login.html", errorMessage = "must provide business name")

# apostrophes and semicolons not allowed in username, to avoid SQL conflicts
if ';' in request.form.get("businessName") or '\'' in request.form.get("businessName"):
return render_template("login.html", businessName=request.form.get("businessName"), errorMessage = "Invalid business name")

# Ensure password was submitted
elif not request.form.get("password"):
return render_template("login.html", businessName=request.form.get("businessName"), errorMessage = "must provide password")

try:
conn = cnxpool.get_connection()
cur = conn.cursor(dictionary=True)

cur.execute("SELECT * FROM businesses WHERE name = %s", (request.form.get("businessName"),))
rows = cur.fetchall()

except mysql.connector.Error as sqlerr:
print(sqlerr)

except Exception as err:
print(err)

else:
# Ensure username exists and password is correct
if len(rows) != 1 or not check_password_hash(rows[0]['password'], request.form.get("password")):
cur.close()
conn.close()
return render_template("login.html", businessName=request.form.get("businessName"), errorMessage = "Invalid business name and/or password")
else:
# Remember which user has logged in (if in login page)
session["user_id"] = rows[0]['businessID']

# Redirect user to message entry page
cur.close()
conn.close()

return redirect("/")

finally:
if (cur):
cur.close()
if (conn):
conn.close()

# User reached route via GET (as by clicking a link or via redirect)
else:
return render_template("login.html")

Вот что я пытался решить проблему:
  • Увеличение «размера пула» до размера более 10
  • Используя MySQL Workbench, щелкнув мою базу данных (это работает) и запросив «SHOW PROCESSLIST» и «KILL [id]»
  • Перезапуск всех динамиков на панели инструментов Heroku
  • Выполнение команды «heroku restart --app [appname]» в коде Visual Studio
Но ничего не работает. Как мне заставить приложение снова запуститься?

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