Recently, we have had a number of users report the following error message when activating or upgrading the ComplianceForge SCF Extra in SimpleRisk:


PHP Fatal error:  Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs


ERROR 1118 (42000) at line 4044: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.


This error is due to a combination of a limitation on the size of a row that can be stored in the MySQL database and the number of frameworks that have now been added to the ComplianceForge Secure Controls Framework.  MySQL has a default Page Size value set to a default value of 16384 (16KB), which results in a maximum row size of slightly less than 8KB.  This explains the "8126" in each of the messages above.


Fortunately, we can reconfigure MySQL to increase the Page Size value to 65536 (64KB), which increases the maximum row size to slightly less than 16KB.  The steps to do this are outlined below:


innodb_page_size can only be configured prior to initializing the MySQL instance and cannot be changed afterward. If no value is specified, the instance is initialized using the default page size. See Section 15.8.1, “InnoDB Startup Configuration”.