Using a reasonably straightforward looping approach, I found a total of 13 distinct simple cycles in your graph:
[1, 2, 5, 4, 7, 8, 9, 6, 1]
[1, 2, 3, 4, 7, 8, 9, 6, 1]
[1, 2, 3, 4, 5, 8, 9, 6, 1]
[1, 2, 5, 8, 9, 6, 1]
[1, 2, 3, 4, 5, 6, 1]
[1, 2, 3, 4, 7, 8, 5, 6, 1]
[1, 2, 5, 6, 1]
[2, 3, 4, 5, 2]
[2, 3, 4, 7, 8, 5, 2]
[2, 3, 4, 7, 8, 9, 6, 5, 2]
[4, 5, 8, 7, 4]
[4, 5, 6, 9, 8, 7, 4]
[5, 6, 9, 8, 5]
The logic is fairly straightforward. We assume that the start of any cycle is the lowest index node in it. So we find all cycles starting at 1, then all cycles starting at 2 noting that they cannot contain 1, then all cycles starting at 3 (and not containing 1 or 2), etc. The cycles are found the usual way: each edge incident at the start node forms a new partial path; each partial path spawns more partial paths by extending it with each edge incident at the last node; an extension is discarded if it leads to either a node less than the start node or a node already on the path (and not the start); and an extension that returns to the start node forms a complete cycle.
This still results in duplication of paths (paths show up both "clockwise" and "counterclockwise"), so we check completed paths to see if they are duplicates.
The Java code to do this took about 11 ms., including building the graph structure, processing and printing. I don't see any way to build and solve a MILP model that finds all simple cycles in that short a time.