Back up all data. If you have iCloud calendars, archive them by following the instructions on this page under the heading "Downloading a calendar from iCloud.com." All you need is a web browser, not the Calendar application. Do the same with any other network calendars you have, if possible.
Before taking each of these steps, quit (force quit if necessary) the application. After taking the step, relaunch and test. When the problem is resolved (or when you complete Step 3 without resolving it), stop and close the Library folder.
Step 1
Hold down the option key and select
Go ▹ Library
from the Finder menu bar. From the folder that opens, move these items (some may not exist) to the Trash, leaving the Library folder open:
Calendars/Calendar Cache
Calendars/Calendar Cache-shm
Calendars/Calendar Cache-wal
Step 2
Move these files from the Library folder to the Desktop (again, some may not exist):
Containers/com.apple.CalendarAgent (and any others with a name beginning in "com.apple.Calendar")
Containers/com.apple.iCal (and any others with a name beginning in "com.apple.iCal")
Preferences/com.apple.CalendarAgent.plist
Preferences/com.apple.iCal.plist
If the problem is resolved, you may be able to put back some of the items you moved in this step, relaunching and testing after each one. Eventually you may find the one that caused the problem; delete it. Recreate your settings as necessary.
If the problem still isn't solved, put back each of the items you moved in this step, overwriting the one that may have been created in its place. You don't have to put back the files you moved in Step 1.
Step 3
Move this folder to the Desktop:
Calendars
Note: you're not moving the Calendars application; you're moving a folder named "Calendars". If there's no change, put the folder back where it was.
If the problem is resolved after you move the Calendars folder, the event database is corrupt. You have these choices:
Restore the folder from a Time Machine snapshot or other backup that predates the corruption.
Use a third-party application such as Calendar Cleaner to try to repair the database.
For network calendar accounts, such as iCloud, all you should need to do is re-enter them in the preferences. For subscribed calendars, you only need to re-subscribe.