Can't load plugin: sqlalchemy.dialects:MySQL in docker-compose with Rasa

When trying to use mysql as my tracker store in a docker-compose cluster, I get the following error:

sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:MySQL

Here is my endpoints.yml:

tracker_store:
    type: SQL
    dialect: "MySQL"  # the dialect used to interact with the db
    url: "db"  # (optional) host of the sql db, e.g. "localhost"
    db: "rasa.db"  # path to your db
    username: "user" # username used for authentication
    password: "pass"

and here is the full exception:

Experienced exception while trying to serve
Traceback (most recent call last):
  File "/opt/venv/lib/python3.8/site-packages/sanic/app.py", line 1204, in run
    serve_single(server_settings)
  File "/opt/venv/lib/python3.8/site-packages/sanic/server/runners.py", line 206, in serve_single
    serve(**server_settings)
  File "/opt/venv/lib/python3.8/site-packages/sanic/server/runners.py", line 130, in serve
    loop.run_until_complete(app._server_event("init", "before"))
  File "uvloop/loop.pyx", line 1501, in uvloop.loop.Loop.run_until_complete
  File "/opt/venv/lib/python3.8/site-packages/sanic/app.py", line 2000, in _server_event
    await self.dispatch(
  File "/opt/venv/lib/python3.8/site-packages/sanic/signals.py", line 191, in dispatch
    return await dispatch
  File "/opt/venv/lib/python3.8/site-packages/sanic/signals.py", line 161, in _dispatch
    retval = await maybe_coroutine
  File "/opt/venv/lib/python3.8/site-packages/sanic/app.py", line 1524, in _listener
    await maybe_coro
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/run.py", line 247, in load_agent_on_start
    app.ctx.agent = await agent.load_agent(
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/agent.py", line 225, in load_agent
    tracker_store = TrackerStore.create(
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/tracker_store.py", line 165, in create
    tracker_store = _create_from_endpoint_config(obj, domain, event_broker)
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/tracker_store.py", line 1315, in _create_from_endpoint_config
    tracker_store = SQLTrackerStore(
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/tracker_store.py", line 915, in __init__
    self.engine = sa.create_engine(engine_url, **create_engine_kwargs(engine_url))
  File "<string>", line 2, in create_engine
  File "/opt/venv/lib/python3.8/site-packages/sqlalchemy/util/deprecations.py", line 309, in warned
    return fn(*args, **kwargs)
  File "/opt/venv/lib/python3.8/site-packages/sqlalchemy/engine/create.py", line 534, in create_engine
    entrypoint = u._get_entrypoint()
  File "/opt/venv/lib/python3.8/site-packages/sqlalchemy/engine/url.py", line 655, in _get_entrypoint
    cls = registry.load(name)
  File "/opt/venv/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 343, in load
    raise exc.NoSuchModuleError(
sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:MySQL
Traceback (most recent call last):
  File "/opt/venv/bin/rasa", line 8, in <module>
    sys.exit(main())
  File "/opt/venv/lib/python3.8/site-packages/rasa/__main__.py", line 110, in main
    cmdline_arguments.func(cmdline_arguments)
  File "/opt/venv/lib/python3.8/site-packages/rasa/cli/run.py", line 126, in run
    rasa.run(**vars(args))
  File "/opt/venv/lib/python3.8/site-packages/rasa/api.py", line 56, in run
    rasa.core.run.serve_application(
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/run.py", line 225, in serve_application
    app.run(
  File "/opt/venv/lib/python3.8/site-packages/sanic/app.py", line 1204, in run
    serve_single(server_settings)
  File "/opt/venv/lib/python3.8/site-packages/sanic/server/runners.py", line 206, in serve_single
    serve(**server_settings)
  File "/opt/venv/lib/python3.8/site-packages/sanic/server/runners.py", line 130, in serve
    loop.run_until_complete(app._server_event("init", "before"))
  File "uvloop/loop.pyx", line 1501, in uvloop.loop.Loop.run_until_complete
  File "/opt/venv/lib/python3.8/site-packages/sanic/app.py", line 2000, in _server_event
    await self.dispatch(
  File "/opt/venv/lib/python3.8/site-packages/sanic/signals.py", line 191, in dispatch
    return await dispatch
  File "/opt/venv/lib/python3.8/site-packages/sanic/signals.py", line 161, in _dispatch
    retval = await maybe_coroutine
  File "/opt/venv/lib/python3.8/site-packages/sanic/app.py", line 1524, in _listener
    await maybe_coro
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/run.py", line 247, in load_agent_on_start
    app.ctx.agent = await agent.load_agent(
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/agent.py", line 225, in load_agent
    tracker_store = TrackerStore.create(
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/tracker_store.py", line 165, in create
    tracker_store = _create_from_endpoint_config(obj, domain, event_broker)
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/tracker_store.py", line 1315, in _create_from_endpoint_config
    tracker_store = SQLTrackerStore(
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/tracker_store.py", line 915, in __init__
    self.engine = sa.create_engine(engine_url, **create_engine_kwargs(engine_url))
  File "<string>", line 2, in create_engine
  File "/opt/venv/lib/python3.8/site-packages/sqlalchemy/util/deprecations.py", line 309, in warned
    return fn(*args, **kwargs)
  File "/opt/venv/lib/python3.8/site-packages/sqlalchemy/engine/create.py", line 534, in create_engine
    entrypoint = u._get_entrypoint()
  File "/opt/venv/lib/python3.8/site-packages/sqlalchemy/engine/url.py", line 655, in _get_entrypoint
    cls = registry.load(name)
  File "/opt/venv/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 343, in load
    raise exc.NoSuchModuleError(
sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:MySQL

I doubt the URL to acces your database is db, and try to rename your database to rasa_db instead of rasa.db.

This error is thrown by SQLAlchemy, not Rasa. You will find more details on its usage there.

Actually my database path is called “db” inside of the docker compose cluster. I can access it with this path from my C# server. I’ve tried rasa_db and it did not work. Also, looking at SQLAlchemy will not help me because it is the rasa docker image having this problem so it is a problem with the rasa image. Even if I know the underlying issue, that won’t help me since the rasa image would need to be updated to fix the issue.

bump

bump

bump

@ski23