unexpected result from boolean difference
This is one of the most common mistakes new users of Boolean modifiers make, so I'll give a detailed example.
Add a cylinder to a scene with the default cube.  Scale the cylinder by .5 and move it +1 on the Z axis.  The result looks like this:

Select the cube. Add a Boolean modifier and set the modifier object to the cylinder.

Nothing seems to have changed in the scene:

The Boolean modifier has worked, as you can see from the wire frame below, but the cylinder is still in the scene, so in solid mode it doesn't look like it worked:

By convention, when a object is used like the cylinder, it's referred to as a cutter.  The workflow for cutters has a few more steps usually:

Parent the cutter to the object it cuts.  This allows you to move the cutter around, but if you move the object the cutter moves with it.

Remove the cutter from the render.  If you leave the cutter in the render, then it will show up.  One way to remove it from the render is to put it into a separate collection and disable that collection.

Change the way the cutter looks in the viewport.  You can go the the cutter's object properties; open the Viewport Display panel and change Display As to Wire Frame