You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello,
I’m not sure if this is a bug, but I have tried many ways to fix it without success.
When writing tests to connect with MySQL using testcontainers, I occasionally encounter a rather strange error as follows:
[error] failed to initialize database, got error MySQL server does not support required protocol 41+
--- FAIL: Test_getAllPromotions/when_get_ongoing_promotions_without_cache (0.01s)
--- FAIL: Test_getAllPromotions (14.31s)
panic: MySQL server does not support required protocol 41+ [recovered]
panic: MySQL server does not support required protocol 41+
Initially, I thought that the MySQL container might need some time to start up and wasn’t ready to connect yet, so in addition to using wait strategies, I paused my tests for a bit. However, this issue still occurred.
The puzzling thing is that once this error happens, even if I wait a few more seconds and try to reconnect, the error continues to occur. The only thing I can do is rerun my tests. This error makes my tests very flaky and quite annoying.
Here is my code snippet for initializing the MySQL container:
funcMustInitMySQLContainer(t*testing.T, cfg*config.Config) *mysql.MySQLContainer {
ctx:=context.Background()
mysqlContainer, err:=mysql.Run(ctx, "mysql:8.0",
testcontainers.WithEnv(map[string]string{
"MYSQL_ROOT_PASSWORD": cfg.MySQL.Password,
"MYSQL_DATABASE": cfg.MySQL.Database,
"MYSQL_USER": cfg.MySQL.Username,
"MYSQL_PASSWORD": cfg.MySQL.Password,
}),
testcontainers.WithWaitStrategy(
wait.ForLog("port: 3306 MySQL Community Server - GPL").WithStartupTimeout(30*time.Second),
wait.ForListeningPort("3306/tcp"),
),
)
iferr!=nil {
t.Fatalf("failed to start container: %s", err)
}
returnmysqlContainer
}
Relevant log output
No response
Additional information
No response
The text was updated successfully, but these errors were encountered:
@anhtranbk
I think this is MySQL8.0 & go-mysql-driver issue.
This error is related to authentication and can be resolved by setting sql.Open AllowNativePassword: true.
Cloud you try it?
Testcontainers version
0.32.0
Using the latest Testcontainers version?
Yes
Host OS
Mac OS
Host arch
Arm64
Go version
1.22
Docker version
Client: Version: 27.0.3 API version: 1.46 Go version: go1.21.11 Git commit: 7d4bcd8 Built: Fri Jun 28 23:59:41 2024 OS/Arch: darwin/arm64 Context: desktop-linux Server: Docker Desktop 4.32.0 (157355) Engine: Version: 27.0.3 API version: 1.46 (minimum version 1.24) Go version: go1.21.11 Git commit: 662f78c Built: Sat Jun 29 00:02:44 2024 OS/Arch: linux/arm64 Experimental: false containerd: Version: 1.7.18 GitCommit: ae71819c4f5e67bb4d5ae76a6b735f29cc25774e runc: Version: 1.7.18 GitCommit: v1.1.13-0-g58aa920 docker-init: Version: 0.19.0 GitCommit: de40ad0
Docker info
What happened?
Hello,
I’m not sure if this is a bug, but I have tried many ways to fix it without success.
When writing tests to connect with MySQL using testcontainers, I occasionally encounter a rather strange error as follows:
Initially, I thought that the MySQL container might need some time to start up and wasn’t ready to connect yet, so in addition to using wait strategies, I paused my tests for a bit. However, this issue still occurred.
The puzzling thing is that once this error happens, even if I wait a few more seconds and try to reconnect, the error continues to occur. The only thing I can do is rerun my tests. This error makes my tests very flaky and quite annoying.
Here is my code snippet for initializing the MySQL container:
Relevant log output
No response
Additional information
No response
The text was updated successfully, but these errors were encountered: