Rename `default_attributes` to `_default_attributes`

It is internal use only. This is to avoid conflicting with users' method
names. Fixes #17458
Treat strings greater than int max value as non-numeric

Sufficiently large integers cause `find` and `find_by` to raise
`StatementInvalid` instead of `RecordNotFound` or just returning `nil`.
Normally, we cast junk input to `nil`, but we can't do so here, as it
can cause MySQL to blow up. 0 is what you would get for any other
non-numeric string, so we use the same value here.

Fixes #17380