SQL leetcode problems and Schrodinger's cat

intro

Have you heard of the Schrodinger’s cat concept? If you’re a physicist, you’ve surely did – it’s a thought experiment that aims to illustrate a paradox of a cat being both dead and alive simultaneously. Sounds interesting, right?

The Schrodinger’s cat concept is not news – what may be new, however, is the fact that the same concept can be applied inside of the SQL world too. Surprised? Don’t be – databases can really disappear one day and appear the other. Just ask any seasoned DBA for his horror stories…

Coming back to the Schrodinger’s cat, answers to such issues are frequently required to properly solve SQL leetcode problems, and they also play a role in many SQL interviews. Read on – we’ll tell you why in a second!

SQL Problems and the Schrödinger's Cat

To illustrate the schrodinger’s cat-related SQL problems, we need to re-introduce you to ACID once again: ACID are the properties that warrant data validity despite power outages or any failures related to data. Frequent readers of our blog may remember us saying that ACID may be implemented differently in different database management systems – the concept remains the same.

Alright, so what does Schrodinger have to do with your database supporting ACID? To answer that question, you need to think of everything the other way around: if an operation you’ve ran previously failed and you’re not being able to act on it, you may be dealing with a Schrodinger’s table in your database instances. Here’s how it works:

  • Issue a SHOW TABLES statement in your database instance. See your table? It shouldn’t be there.
  • Try to create the same table with the same name (the engine or the structure of the table doesn’t matter here) – your database will return an error #1050 (42S01) saying that “The table already exists.” Hmm?
  • Okay, so if the table exists, try to perform some action on it: truncate or drop it for an example. You will be faced with another error – this time your SQL databases will tell you that the table in question does not exist. What the…?

For additional confirmation, visit the data directory of your database instance. If you’re using MySQL server, that’s most likely /var/lib/mysql/data. Are you able to see the files having .frm and .ibd extensions? .frm means data definition, and .ibd files store the data of the tables inside of them. Weird? Should be.

Files having .frm, .opt, and .ibd extensions in a Database
Files having .frm, .opt, and .ibd extensions in a Database

Fixing the Paradox

What a weird cat, huh? Time to get it out of your database. Thankfully, it’s rather easy to do so:

  1. Shut down your database instance for a bit.
  2. If you’re running MySQL, ensure that you’re running MySQL with the file-per-table setting set to “1” (check your my.cnf file.) This setting decouples the files that store data relevant to InnoDB tables from ibdata1 (the core file that stores InnoDB files.) If you’re running newer versions of MySQL, this step has already been completed for you, so feel free to skip it. Other database management systems should also have similar approaches, so please check the documentation.
  3. Create a table with the same name on a different database instance. If you don’t have one, create one locally.
  4. Make sure the permissions of the files are correct, then copy over the .frm and .ibd files to your original database instance – put them inside of the database by copying them over to the folder bearing your database name in the data directory and restart your database.
  5. Your Schrodinger’s table should now be visible to your database once again – feel free to drop the table within your database.

If everything seems too complex, don’t fret – you can also perform a global cleanup just as easily. Read on.

Global Cleanup

To perform a global cleanup of your database, perform these steps:

  1. Take a backup of your data.
  2. Shut down your database instance.
  3. Delete the relevant files to your storage engine of choice (for MySQL, these files are the ibdata1 files and the ib_logfile0 and ib_logfile1 files.)
  4. Start your database instance anew (the aforementioned files will be recreated) and re-import your data.

Your database is now fresh – woohoo!

SQL Clients and Avoiding Paradoxes

If you’ve been facing the Schrodinger’s cat or any other paradox in your database instances in the recent months, you already know how confusing it can become; to avoid such paradoxes, make sure to use top-rated SQL clients like the one provided by DbVisualizer. DbVisualizer is a powerful SQL client that will not only help you write SQL queries, but also help you visualize their output in a beautiful manner, enable you to secure your data with a master password if you so desire, help you organize your work in your personal workspace and put your messy data management back into your hands – start using it today.

Summary

In this blog, we’ve walked you through the so-called Schrodinger’s cat paradox in database management systems. While to some it seem weird and troublesome, the paradox can cause real problems to your databases both now and in the future, so for it not to be a headache for you or your staff, ensure that your running transactions are not interrupted, and if they are, know the steps you should perform next.

Dbvis download link img
About the author
LukasVileikisPhoto
Lukas Vileikis
Lukas Vileikis is an ethical hacker and a frequent conference speaker. He runs one of the biggest & fastest data breach search engines in the world - BreachDirectory.com, frequently speaks at conferences and blogs in multiple places including his blog over at lukasvileikis.com.
The Table Icon
Sign up to receive The Table's roundup
More from the table
Title Author Tags Length Published
title

Top Serverless SQL and NoSQL Database Platforms in 2025

author Antonello Zanini tags NOSQL SQL 8 min 2025-07-02
title

Top Collaborative Data Modeling and Database Design Tools in 2025

author Antonello Zanini tags Database design Schema design 9 min 2025-07-01
title

The Best MySQL Client in 2025

author Lukas Vileikis tags Database clients MySQL 11 min 2025-06-30
title

SQL DROP TABLE IF EXISTS: The Database Migration Lifesaver

author Leslie S. Gyamfi tags MySQL ORACLE POSTGRESQL SQL SQL SERVER 10 min 2025-06-25
title

Default PostgreSQL Port 5432: Configure, Verify, and Change Your Postgres Port

author TheTable tags POSTGRESQL 4 min 2025-06-24
title

Using the MySQL CREATE TABLE Statement: A Complete Guide

author Lukas Vileikis tags MARIADB MySQL 4 min 2025-06-23
title

PostgreSQL OID: A Guide on The Object Identifier Type

author Antonello Zanini tags POSTGRESQL 7 min 2025-06-18
title

Top Internal Tool Builders and Low-Code Platforms for SQL Apps in 2025

author Antonello Zanini tags Internal Tool Builders Low-Code No-Code SQL 9 min 2025-06-17
title

How to Protect Your Database From the Threats Outlined in OWASP Top 10?

author Lukas Vileikis tags SECURITY SQL 6 min 2025-06-17
title

Postgres CREATE SCHEMA: A Complete Guide

author Antonello Zanini tags POSTGRESQL 7 min 2025-06-16

The content provided on dbvis.com/thetable, including but not limited to code and examples, is intended for educational and informational purposes only. We do not make any warranties or representations of any kind. Read more here.