Because the MySQL spec doesn't say it is a number. In contrast to error numbers, which are transmitted numerical, the warning code is transmitted as text. This is why I named warning *Code* and error *Number* different.