Dynamically change schema to accommodate custom fields!
I did a presentation about the various solutions to support custom fields:


Extensible Data Modeling with MySQL.


The most straightforward option for greatest compatibility with SQL, including constraints and data types, is just to add columns as needed. But I would caution to not let users do this, instead let them submit a request and the DBA can perform the operation. A good tool to reduce impact is pt-online-schema-change.

Other solutions include:


EAV (but before you try it please read the article Bad CaRMa, and my blog post EAV FAIL)
Class table inheritance
Serialized LOB with Inverted Indexes
NoSQL document-store solutions