Fixed error message when dialector fails to initialize#6509
Merged
jinzhu merged 2 commits intogo-gorm:masterfrom Aug 20, 2023
Merged
Fixed error message when dialector fails to initialize#6509jinzhu merged 2 commits intogo-gorm:masterfrom
jinzhu merged 2 commits intogo-gorm:masterfrom
Conversation
Let's say we have a problem with DSN which leads to dialector initialize error. However DB connection is not created and for some reason line 184 error provides <nil> even though "db" doesn't exist. Previously, this code leads to: panic: runtime error: invalid memory address or nil pointer dereference This fix now doesn't attempt to close non-existant database connection and instead continues, so the proper error is shown. In my case: [error] failed to initialize database, got error default addr for network 'localhost' unknown
Fixed error message when dialector fails to initialize
a631807682
reviewed
Aug 7, 2023
Member
a631807682
left a comment
There was a problem hiding this comment.
Can you add some tests? related to #6373
jinzhu
approved these changes
Aug 20, 2023
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What did this pull request do?
Dialector initialize error leads to closing DB connection. However if DB connection is not even created, code inside gorm provides
nilas an error even thoughdbdoesn't exist (is nil), so it tries to close what can't be closed and results to panic.panic: runtime error: invalid memory address or nil pointer dereferenceThis fix now doesn't attempt to close non-existant database connection and instead continues, so the proper error is shown.
User Case Description
When I provide this example DSN (I am aware that this is wrong, it's a purpose to showcase this problem):
test:test@localhost/test?charset=utf8mb4&parseTime=True&loc=LocalTo this piece of code:
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})I got:
panic: runtime error: invalid memory address or nil pointer dereferenceWith this fix I get proper error:
[error] failed to initialize database, got error default addr for network 'localhost' unknownThis error is now in
errvariable in my app, instead of it failing inside gorm.