The database schema needs primary keys, preferably everywhere

The database schema needs adjusting, specifically it needs primary keys in order to be DML-safe for Galera. Otherwise certain features that rely on tables like ipv4_mac will not work properly.

To see what needs to be changed run this inside librenms database:

SET group_concat_max_len = 1000000; SELECT GROUP_CONCAT(query SEPARATOR ' ') run_this FROM ( SELECT CONCAT ('ALTER TABLE ',TABLES.table_name,' ADD fixme_primary_key INT KEY AUTO_INCREMENT FIRST;') query FROM INFORMATION_SCHEMA.TABLES LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS c ON ( TABLES.TABLE_NAME = c.TABLE_NAME AND c.CONSTRAINT_SCHEMA = TABLES.TABLE_SCHEMA AND c.constraint_name = 'PRIMARY' ) WHERE TABLES.table_schema = DATABASE() AND c.constraint_name IS NULL ) list;

The result should be schema adjustments in one query. Example:

ALTER TABLE ipv4_mac ADD fixme_primary_key INT KEY AUTO_INCREMENT FIRST; ALTER TABLE ... 

Learn more about why this is necessary.

1 Like