Skip to content
  • Kevin Morris's avatar
    use mysql backend in config.dev · aecb6494
    Kevin Morris authored
    
    
    First off: This commit changes the default development database
    backend to mysql. sqlite, however, is still completely supported
    with the caveat that a user must now modify config.dev to use
    the sqlite backend.
    
    While looking into this, it was discovered that our SQLAlchemy
    backend for mysql (mysql-connector) completely broke model
    attributes when we switched to utf8mb4_bin (binary) -- it does
    not correct the correct conversion to and from binary utf8mb4.
    
    The new, replacement dependency mysqlclient does. mysqlclient
    is also recommended in SQLAlchemy documentation as the "best"
    one available.
    
    The mysqlclient backend uses a different exception flow then
    sqlite, and so tests expecting IntegrityError has to be modified
    to expect OperationalError from sqlalchemy.exc.
    
    So, for each model that we define, check keys that can't be
    NULL and raise sqlalchemy.exc.IntegrityError if we have to.
    This way we keep our exceptions uniform.
    
    Signed-off-by: Kevin Morris's avatarKevin Morris <kevr@0cost.org>
    aecb6494