'SQLAlchemy - Data long long for column email

I use a simple MySQL Database with a SQLAlchemy Model:

from tokenize import String from sqlalchemy import Column, Integer, String

from .database import Base

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    email = Column(String(256), unique=True, index=True)
    hashed_password = Column(String(256))

It works fine, but when the character length exceeds a number of characters which is much smaller than 256, I get the following error:

fastapi    | sqlalchemy.exc.DataError: (MySQLdb._exceptions.DataError) (1406, "Data too long for column 'email' at row 1")
fastapi    | [SQL: INSERT INTO users (email, hashed_password) VALUES (%s, %s)]
fastapi    | [parameters: ('sdasdasdasdasdasda', 'sdasdasdasdasdasdsadadasdasd')]

I know there is a "strict-mode" in MySQL, but I would rather like to understand the error here and make it work in the python code, since I run the Database in a Container.

SHOW CREATE TABLE users:

| users | CREATE TABLE `users` (
  `id` int NOT NULL AUTO_INCREMENT,
  `email` varchar(256) DEFAULT NULL,
  `hashed_password` varchar(256) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ix_users_email` (`email`),
  KEY `ix_users_id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source