从.NET连接到Mariadb Docker容器的问题

63lcw9qa  于 2023-04-22  发布在  .NET
关注(0)|答案(1)|浏览(123)

我正在尝试连接到本地托管的MariaDB Docker容器。我正在使用以下docker compose设置:

mariadb:
    image: mariadb
    container_name: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_DATABASE: conciergedb
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    volumes:
      - ${DOCKERPATH}/mariadb:/var/lib/mysql
      - ./mariainit:/docker-entrypoint-initdb.d
    ports:
      - 3306:3306
    networks:
      network:
        ipv4_address: 10.5.0.3

我使用mysql -h 127.0.0.1 -u brian -p和MySQLEbenchbench通过Ubuntu wsl上的mysql cli进行了连接,并使用了以下配置:

Hostname: 127.0.0.1
Port: 3306
Username: brian
Default Schema: conciergedb

现在,回到.NET(使用MySql.Data.MySqlClient),我使用以下连接字符串:

server=127.0.0.1;port=3306;user id=brian;password=<PASS>;database=conciergedb;ConnectionTimeout=60;

这会在conn.Open()上抛出以下错误:

System.InvalidCastException: 'Object cannot be cast from DBNull to other types.'

如果我没有关闭连接,Docker日志会在调试退出时抛出以下内容:

[Warning] Aborted connection # to db: 'conciergedb' user: 'brian' host: '10.5.0.1' (Got an error reading communication packets)

所以这告诉我,有些事情正在经历,但没有得到承认。有什么想法,我可以尝试?
P.S.我也试着连接到10.5.0.3,但没有用。

eeq64g8w

eeq64g8w1#

我假设你的应用程序也运行在与MariaDb相同的Docker网络中的容器中。在这种情况下,问题是你的连接字符串。运行MariaDb的容器的名称是;

mariadb:
    image: mariadb
    container_name: mariadb

因此,您的数据库连接字符串为:

server=mariadb;port=3306;user id=

相关问题