That's really an informational message.
Likely, you're doing OPTIMIZE on an InnoDB table (table using the InnoDB storage engine, rather than the MyISAM storage engine).
InnoDB doesn't support the OPTIMIZE the way MyISAM does. It does something different. It creates an empty table, and copies all of the rows from the existing table into it, and essentially deletes the old table and renames the new table, and then runs an ANALYZE to gather statistics. That's the closest that InnoDB can get to doing an OPTIMIZE.
The message you are getting is basically MySQL server repeating what the InnoDB storage engine told MySQL server:
Table does not support optimize is the InnoDB storage engine saying...
"I (the InnoDB storage engine) don't do an OPTIMIZE operation like my friend (the MyISAM storage engine) does."
"doing recreate + analyze instead" is the InnoDB storage engine saying...
"I have decided to perform a different set of operations which will achieve an equivalent result."
EDIT
This needs to reviewed for accuracy. Observed behavior from MySQL 5.7 and also on MariaDB 10.3
Point to emphasize, InnoDB and MyISAM are two different storage engines. They operate differently. Is why the messags we see is different.
We are issuing the DDL statements to MySQL database server. The MySQL server receives the statement, does the usual syntax check parsing, tokens, ... and resolves references to tables, columns with lookups in the dictionary.
Beware - do not use this if you are low on disk space as it is likely to cause your server to run out trying to recreate the very large table.
--Danny Staple
Yes, beware diskspace limitation. And how long operation will hold EXCLUSIVE (blocking) lock on the table. If we understand what operations the optimizer is coming up with; typically for large volume of data, I opt for partitioning, which allows operating on standalone tables that can be swapped into (REPLACE) an existing partition.