CREATE TABLE Statement a new column that the application does not expect to be there. In a  SELECT *  query, the  *  evaluates to all table columns, except those that are invisible, so the solution is to add the new column as an invisible column. The column remains “hidden”  from  SELECT *  queries, and the application continues to work as previously. A newer version of the application can refer to the invisible column if necessary by explicitly referencing it. The following sections detail how MySQL treats invisible columns. Columns are visible by default. To explicitly specify visibility for a new column, use a  VISIBLE  or INVISIBLE  keyword as part of the column definition for  CREATE TABLE  or  ALTER TABLE : To alter the visibility of an existing column, use a  VISIBLE  or  INVISIBLE  keyword with one of the  ALTER TABLE  column-modification clauses: A table must have at least one visible column. Attempting to make all columns invisible produces an error. Invisible columns support the usual column attributes:  NULL ,  NOT NULL ,  AUTO_INCREMENT , and so forth. Generated columns can be invisible. Index definitions can name invisible columns, including definitions for  PRIMARY KEY  and  UNIQUE  indexes. Although a table must have at least one visible column, an index definition need not have any visible columns. An invisible column dropped from a table is dropped in the usual way from any index definition that names the column. Foreign key constraints can be defined on invisible columns, and foreign key constraints can reference invisible columns. CHECK  constraints can be defined on invisible columns. For new or modified rows, violation of a  CHECK constraint on an invisible column produces an error. CREATE TABLE ... LIKE  includes invisible columns, and they are invisible in the new table. CREATE TABLE ... SELECT  does not include invisible columns, unless they are explicitly referenced in the  SELECT  part. However, even if explicitly referenced, a column that is invisible in the existing table is visible in the new table: 2591 mysql>  CREATE TABLE t1 (col1 INT, col2 INT INVISIBLE); ALTER TABLE t1 CHANGE COLUMN j j DATE VISIBLE; ALTER TABLE t1 MODIFY COLUMN j DATE INVISIBLE; ALTER TABLE t1 ALTER COLUMN j SET VISIBLE; CREATE TABLE t1 ( i INT, j DATE INVISIBLE ) ENGINE = InnoDB; ALTER TABLE t1 ADD COLUMN k INT INVISIBLE; •DDL Statements and Invisible Columns •DML Statements and Invisible Columns •Invisible Column Metadata •The Binary Log and Invisible Columns DDL Statements and Invisible Columns