Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Está aparedendo esse erro e não consigo resolver

Erro de banco de dados sqlalchemy.exc.DatabaseError: (mysql.connector.errors.DatabaseError) 1273 (HY000): Agrupamento desconhecido: 'utf8mb4_0900_ai_ci' (Antecedentes sobre este erro em: https://sqlalche.me/e/20/4xp6)

Rodei o camando abaixo na base de dados

ALTER DATABASE jogoteca CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Acredito que deve ser alguma incompatibilidade mas não consegui corrrigir

4 respostas

from flask import Flask, render_template, request, redirect, session, flash, url_for from flask_sqlalchemy import SQLAlchemy

app = Flask(name) app.secret_key = 'alura'

app.config['SQLALCHEMY_DATABASE_URI'] = '{SGBD}://{usuario}:{senha}@{servidor}/{database}'.format( SGBD = 'mysql+mysqlconnector', usuario = 'root', senha = '', servidor = 'localhost', database = 'jogoteca' )

db = SQLAlchemy(app)

class Jogos(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) nome = db.Column(db.String(50), nullable=False) categoria = db.Column(db.String(40), nullable=False) console = db.Column(db.String(20), nullable=False)

def __repr__(self):
    return '<Name %r>' % self.name

class Usuarios(db.Model): nickname = db.Column(db.String(8), primary_key=True) nome = db.Column(db.String(20), nullable=False) senha = db.Column(db.String(100), nullable=False)

def __repr__(self):
    return '<Name %r>' % self.name

@app.route('/') def index(): lista = Jogos.query.order_by(Jogos.id) return render_template('lista.html', titulo='Jogos', jogos=lista)

@app.route('/novo') def novo(): if 'usuario_logado' not in session or session['usuario_logado'] == None: return redirect(url_for('login', proxima=url_for('novo'))) return render_template('novo.html', titulo='Novo Jogo')

@app.route('/criar', methods=['POST',]) def criar(): nome = request.form['nome'] categoria = request.form['categoria'] console = request.form['console']

jogo = Jogos.query.filter_by(nome=nome).first()

if jogo:
    flash('Jogo já existente!')
    return redirect(url_for('index'))

novo_jogo = Jogos(nome=nome, categoria=categoria, console=console)
db.session.add(novo_jogo)
db.session.commit()

return redirect(url_for('index'))

@app.route('/login') def login(): proxima = request.args.get('proxima') return render_template('login.html', proxima=proxima)

@app.route('/autenticar', methods=['POST',]) def autenticar(): usuario = Usuarios.query.filter_by(nickname=request.form['usuario']).first() if usuario: if request.form['senha'] == usuario.senha: session['usuario_logado'] = usuario.nickname flash(usuario.nickname + ' logado com sucesso!') proxima_pagina = request.form['proxima'] return redirect(proxima_pagina) else: flash('Usuário não logado.') return redirect(url_for('login'))

@app.route('/logout') def logout(): session['usuario_logado'] = None flash('Logout efetuado com sucesso!') return redirect(url_for('index'))

app.run(debug=True)

Esse é o código que está dando o erro

solução!

Resolvi, era a versão do Mysql que esta instalada na minha máquina, removi e instalei a recomendada

Oi Alexandre, tudo bem?

Que bom que você conseguiu encontrar uma solução. Obrigada por compartilhar com a gente.

Um abraço e bons estudos.