Using a leading _
character currently has no conflicts with MySQL's reserved keywords, but in theory they could start using that character in the future. The chances of it are quite low, but that's not a strict guarantee.
It's true that each new version of MySQL may introduce a few new keywords. If you want to prepare for any new reserved keywords, the only sure solution is to develop a habit of using back-ticks on all your identifiers.
The same risk exists in any other programming language, by the way. This is inconvenient for anyone using those words as names of functions, classes, or constants.
PHP 7.1 introduced reserved words void
and iterable
, and object
was added in PHP 7.2.
Java 4 added assert
, Java 5 added enum
, and Java 9 added _
as reserved words.
JavaScript/ECMAScript has a complex history of adding and removing reserved words. See https://mathiasbynens.be/notes/reserved-keywords
Python 3 added reserved words False
, True
, None
, __peg_parser__
, async
, await
, nonlocal
, and removed as keywords exec
and print
.
Ultimately, you just need to accept that when you upgrade a major version of some software, you have to do some work to accommodate its changes.