Using reserved words in column names

You can still use key if you want to. Just wrap it with backtick,

CREATE TABLE IF NOT EXISTS users
(
    `key` INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
);

but as an advise, refrain from using any reserved keyword to avoid future problems. :)

  • MySQL Reserved Keywords List

Trailing Underscore

Simple solution: Add a trailing underscore to every name.

The SQL spec SQL:2011 explicitly promises to never use a trailing underscore on any keyword, neither now nor in the future.

Example: key_

See my answer to a similar question, h2 database column name is reserved word.