Unable to run any tests because "Relation Does Not Exist"

I wanted to actually write some tests for my application as I didn’t have any. I wrote a few quick tests, modelling them after the “animal” example on the “writing and running tests” page.

class EventsTestCase(TestCase):
    def setUp(self):
        Events.objects.create(
            id="19780919-01",
            date=datetime.strptime("1978-09-19", "%Y-%m-%d"),
        )

    def test_event_get_date(self):
        """Check create event and date."""
        event = Events.objects.get(id="19780919-01")
        self.assertEqual(event.get_date(), "1978-09-19 [Tue]")

No matter the model used, all of them fail with some variation on the error django.db.utils.ProgrammingError: relation “events” does not exist.

In my searching, I found a few similar errors and posts which say to run makemigrations beforehand, which doesn’t work. I’ve deleted the migration files and re-ran that a few times, still nothing. Even truncated the django_migrations table, all to no avail.

I think it has to do with the fake “test database” just not creating the specified table at all for some reason. Setting verbosity to 3 on the test command still gives the same end error with nothing about a table failing to create.

I am on Python 3.12.10 and Django 5.2.10.

Here is the full error traceback:

Found 1 test(s).
Creating test database for alias 'default' ('test_databruce')...
Operations to perform:
  Synchronize unmigrated apps: django_browser_reload, django_filters, messages, postgres, rest_framework, sitemaps, staticfiles
  Apply all migrations: admin, auth, contenttypes, databruce, sessions, shortener, sites
Running pre-migrate handlers for application admin
Running pre-migrate handlers for application auth
Running pre-migrate handlers for application contenttypes
Running pre-migrate handlers for application sessions
Running pre-migrate handlers for application sites
Running pre-migrate handlers for application databruce
Running pre-migrate handlers for application shortener
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
Running migrations:
  Applying contenttypes.0001_initial... OK (0.015s)
  Applying auth.0001_initial... OK (0.032s)
  Applying admin.0001_initial... OK (0.015s)
  Applying admin.0002_logentry_remove_auto_add... OK (0.000s)
  Applying admin.0003_logentry_add_action_flag_choices... OK (0.016s)
  Applying contenttypes.0002_remove_content_type_name... OK (0.000s)
  Applying auth.0002_alter_permission_name_max_length... OK (0.016s)
  Applying auth.0003_alter_user_email_max_length... OK (0.000s)
  Applying auth.0004_alter_user_username_opts... OK (0.000s)
  Applying auth.0005_alter_user_last_login_null... OK (0.015s)
  Applying auth.0006_require_contenttypes_0002... OK (0.000s)
  Applying auth.0007_alter_validators_add_error_messages... OK (0.000s)
  Applying auth.0008_alter_user_username_max_length... OK (0.016s)
  Applying auth.0009_alter_user_last_name_max_length... OK (0.000s)
  Applying auth.0010_alter_group_name_max_length... OK (0.000s)
  Applying auth.0011_update_proxy_permissions... OK (0.015s)
  Applying auth.0012_alter_user_first_name_max_length... OK (0.000s)
  Applying databruce.0001_initial... OK (0.047s)
  Applying sessions.0001_initial... OK (0.000s)
  Applying shortener.0001_initial... OK (0.032s)
  Applying shortener.0002_auto_20190528_1522... OK (0.015s)
  Applying shortener.0003_auto_20190528_1558... OK (0.016s)
  Applying shortener.0004_alter_urlprofile_enabled... OK (0.000s)
  Applying shortener.0005_alter_urlmap_id_alter_urlprofile_id... OK (0.031s)
  Applying sites.0001_initial... OK (0.016s)
  Applying sites.0002_alter_domain_unique... OK (0.000s)
Running post-migrate handlers for application admin
Adding content type 'admin | logentry'
Adding permission 'Permission object (1)'
Adding permission 'Permission object (2)'
Adding permission 'Permission object (3)'
Adding permission 'Permission object (4)'
Running post-migrate handlers for application auth
Adding content type 'auth | permission'
Adding content type 'auth | group'
Adding content type 'auth | user'
Adding permission 'Permission object (5)'
Adding permission 'Permission object (6)'
Adding permission 'Permission object (7)'
Adding permission 'Permission object (8)'
Adding permission 'Permission object (9)'
Adding permission 'Permission object (10)'
Adding permission 'Permission object (11)'
Adding permission 'Permission object (12)'
Adding permission 'Permission object (13)'
Adding permission 'Permission object (14)'
Adding permission 'Permission object (15)'
Adding permission 'Permission object (16)'
Running post-migrate handlers for application contenttypes
Adding content type 'contenttypes | contenttype'
Adding permission 'Permission object (17)'
Adding permission 'Permission object (18)'
Adding permission 'Permission object (19)'
Adding permission 'Permission object (20)'
Running post-migrate handlers for application sessions
Adding content type 'sessions | session'
Adding permission 'Permission object (21)'
Adding permission 'Permission object (22)'
Adding permission 'Permission object (23)'
Adding permission 'Permission object (24)'
Running post-migrate handlers for application sites
Adding content type 'sites | site'
Adding permission 'Permission object (25)'
Adding permission 'Permission object (26)'
Adding permission 'Permission object (27)'
Adding permission 'Permission object (28)'
Creating example.com Site object
Resetting sequence
Running post-migrate handlers for application databruce
Adding content type 'databruce | archivelinks'
Adding content type 'databruce | authgroup'
Adding content type 'databruce | authgrouppermissions'
Adding content type 'databruce | authpermission'
Adding content type 'databruce | authuser'
Adding content type 'databruce | authusergroups'
Adding content type 'databruce | authuseruserpermissions'
Adding content type 'databruce | bands'
Adding content type 'databruce | bootlegs'
Adding content type 'databruce | bootlegsbydate'
Adding content type 'databruce | cities'
Adding content type 'databruce | continents'
Adding content type 'databruce | countries'
Adding content type 'databruce | covers'
Adding content type 'databruce | djangoadminlog'
Adding content type 'databruce | djangocontenttype'
Adding content type 'databruce | djangomigrations'
Adding content type 'databruce | djangosession'
Adding content type 'databruce | events'
Adding content type 'databruce | guests'
Adding content type 'databruce | lyrics'
Adding content type 'databruce | notes'
Adding content type 'databruce | nugsreleases'
Adding content type 'databruce | onstage'
Adding content type 'databruce | onstagebandmembers'
Adding content type 'databruce | openersclosers'
Adding content type 'databruce | premieredebut'
Adding content type 'databruce | relations'
Adding content type 'databruce | releasediscs'
Adding content type 'databruce | releases'
Adding content type 'databruce | releasetracks'
Adding content type 'databruce | runs'
Adding content type 'databruce | setlistentries'
Adding content type 'databruce | setlists'
Adding content type 'databruce | setlistsbysetanddate'
Adding content type 'databruce | siteupdates'
Adding content type 'databruce | snippets'
Adding content type 'databruce | songs'
Adding content type 'databruce | songsafterrelease'
Adding content type 'databruce | songspagenew'
Adding content type 'databruce | states'
Adding content type 'databruce | studiosessions'
Adding content type 'databruce | tags'
Adding content type 'databruce | tourcounts'
Adding content type 'databruce | tourlegs'
Adding content type 'databruce | tours'
Adding content type 'databruce | updates'
Adding content type 'databruce | userattendedshows'
Adding content type 'databruce | venues'
Adding content type 'databruce | setlistsbydate'
Adding content type 'databruce | setlistnotes'
Adding content type 'databruce | songspage'
Adding content type 'databruce | venuestext'
Adding permission 'Permission object (29)'
Adding permission 'Permission object (30)'
Adding permission 'Permission object (31)'
Adding permission 'Permission object (32)'
Adding permission 'Permission object (33)'
Adding permission 'Permission object (34)'
Adding permission 'Permission object (35)'
Adding permission 'Permission object (36)'
Adding permission 'Permission object (37)'
Adding permission 'Permission object (38)'
Adding permission 'Permission object (39)'
Adding permission 'Permission object (40)'
Adding permission 'Permission object (41)'
Adding permission 'Permission object (42)'
Adding permission 'Permission object (43)'
Adding permission 'Permission object (44)'
Adding permission 'Permission object (45)'
Adding permission 'Permission object (46)'
Adding permission 'Permission object (47)'
Adding permission 'Permission object (48)'
Adding permission 'Permission object (49)'
Adding permission 'Permission object (50)'
Adding permission 'Permission object (51)'
Adding permission 'Permission object (52)'
Adding permission 'Permission object (53)'
Adding permission 'Permission object (54)'
Adding permission 'Permission object (55)'
Adding permission 'Permission object (56)'
Adding permission 'Permission object (57)'
Adding permission 'Permission object (58)'
Adding permission 'Permission object (59)'
Adding permission 'Permission object (60)'
Adding permission 'Permission object (61)'
Adding permission 'Permission object (62)'
Adding permission 'Permission object (63)'
Adding permission 'Permission object (64)'
Adding permission 'Permission object (65)'
Adding permission 'Permission object (66)'
Adding permission 'Permission object (67)'
Adding permission 'Permission object (68)'
Adding permission 'Permission object (69)'
Adding permission 'Permission object (70)'
Adding permission 'Permission object (71)'
Adding permission 'Permission object (72)'
Adding permission 'Permission object (73)'
Adding permission 'Permission object (74)'
Adding permission 'Permission object (75)'
Adding permission 'Permission object (76)'
Adding permission 'Permission object (77)'
Adding permission 'Permission object (78)'
Adding permission 'Permission object (79)'
Adding permission 'Permission object (80)'
Adding permission 'Permission object (81)'
Adding permission 'Permission object (82)'
Adding permission 'Permission object (83)'
Adding permission 'Permission object (84)'
Adding permission 'Permission object (85)'
Adding permission 'Permission object (86)'
Adding permission 'Permission object (87)'
Adding permission 'Permission object (88)'
Adding permission 'Permission object (89)'
Adding permission 'Permission object (90)'
Adding permission 'Permission object (91)'
Adding permission 'Permission object (92)'
Adding permission 'Permission object (93)'
Adding permission 'Permission object (94)'
Adding permission 'Permission object (95)'
Adding permission 'Permission object (96)'
Adding permission 'Permission object (97)'
Adding permission 'Permission object (98)'
Adding permission 'Permission object (99)'
Adding permission 'Permission object (100)'
Adding permission 'Permission object (101)'
Adding permission 'Permission object (102)'
Adding permission 'Permission object (103)'
Adding permission 'Permission object (104)'
Adding permission 'Permission object (105)'
Adding permission 'Permission object (106)'
Adding permission 'Permission object (107)'
Adding permission 'Permission object (108)'
Adding permission 'Permission object (109)'
Adding permission 'Permission object (110)'
Adding permission 'Permission object (111)'
Adding permission 'Permission object (112)'
Adding permission 'Permission object (113)'
Adding permission 'Permission object (114)'
Adding permission 'Permission object (115)'
Adding permission 'Permission object (116)'
Adding permission 'Permission object (117)'
Adding permission 'Permission object (118)'
Adding permission 'Permission object (119)'
Adding permission 'Permission object (120)'
Adding permission 'Permission object (121)'
Adding permission 'Permission object (122)'
Adding permission 'Permission object (123)'
Adding permission 'Permission object (124)'
Adding permission 'Permission object (125)'
Adding permission 'Permission object (126)'
Adding permission 'Permission object (127)'
Adding permission 'Permission object (128)'
Adding permission 'Permission object (129)'
Adding permission 'Permission object (130)'
Adding permission 'Permission object (131)'
Adding permission 'Permission object (132)'
Adding permission 'Permission object (133)'
Adding permission 'Permission object (134)'
Adding permission 'Permission object (135)'
Adding permission 'Permission object (136)'
Adding permission 'Permission object (137)'
Adding permission 'Permission object (138)'
Adding permission 'Permission object (139)'
Adding permission 'Permission object (140)'
Adding permission 'Permission object (141)'
Adding permission 'Permission object (142)'
Adding permission 'Permission object (143)'
Adding permission 'Permission object (144)'
Adding permission 'Permission object (145)'
Adding permission 'Permission object (146)'
Adding permission 'Permission object (147)'
Adding permission 'Permission object (148)'
Adding permission 'Permission object (149)'
Adding permission 'Permission object (150)'
Adding permission 'Permission object (151)'
Adding permission 'Permission object (152)'
Adding permission 'Permission object (153)'
Adding permission 'Permission object (154)'
Adding permission 'Permission object (155)'
Adding permission 'Permission object (156)'
Adding permission 'Permission object (157)'
Adding permission 'Permission object (158)'
Adding permission 'Permission object (159)'
Adding permission 'Permission object (160)'
Adding permission 'Permission object (161)'
Adding permission 'Permission object (162)'
Adding permission 'Permission object (163)'
Adding permission 'Permission object (164)'
Adding permission 'Permission object (165)'
Adding permission 'Permission object (166)'
Adding permission 'Permission object (167)'
Adding permission 'Permission object (168)'
Adding permission 'Permission object (169)'
Adding permission 'Permission object (170)'
Adding permission 'Permission object (171)'
Adding permission 'Permission object (172)'
Adding permission 'Permission object (173)'
Adding permission 'Permission object (174)'
Adding permission 'Permission object (175)'
Adding permission 'Permission object (176)'
Adding permission 'Permission object (177)'
Adding permission 'Permission object (178)'
Adding permission 'Permission object (179)'
Adding permission 'Permission object (180)'
Adding permission 'Permission object (181)'
Adding permission 'Permission object (182)'
Adding permission 'Permission object (183)'
Adding permission 'Permission object (184)'
Adding permission 'Permission object (185)'
Adding permission 'Permission object (186)'
Adding permission 'Permission object (187)'
Adding permission 'Permission object (188)'
Adding permission 'Permission object (189)'
Adding permission 'Permission object (190)'
Adding permission 'Permission object (191)'
Adding permission 'Permission object (192)'
Adding permission 'Permission object (193)'
Adding permission 'Permission object (194)'
Adding permission 'Permission object (195)'
Adding permission 'Permission object (196)'
Adding permission 'Permission object (197)'
Adding permission 'Permission object (198)'
Adding permission 'Permission object (199)'
Adding permission 'Permission object (200)'
Adding permission 'Permission object (201)'
Adding permission 'Permission object (202)'
Adding permission 'Permission object (203)'
Adding permission 'Permission object (204)'
Adding permission 'Permission object (205)'
Adding permission 'Permission object (206)'
Adding permission 'Permission object (207)'
Adding permission 'Permission object (208)'
Adding permission 'Permission object (209)'
Adding permission 'Permission object (210)'
Adding permission 'Permission object (211)'
Adding permission 'Permission object (212)'
Adding permission 'Permission object (213)'
Adding permission 'Permission object (214)'
Adding permission 'Permission object (215)'
Adding permission 'Permission object (216)'
Adding permission 'Permission object (217)'
Adding permission 'Permission object (218)'
Adding permission 'Permission object (219)'
Adding permission 'Permission object (220)'
Adding permission 'Permission object (221)'
Adding permission 'Permission object (222)'
Adding permission 'Permission object (223)'
Adding permission 'Permission object (224)'
Adding permission 'Permission object (225)'
Adding permission 'Permission object (226)'
Adding permission 'Permission object (227)'
Adding permission 'Permission object (228)'
Adding permission 'Permission object (229)'
Adding permission 'Permission object (230)'
Adding permission 'Permission object (231)'
Adding permission 'Permission object (232)'
Adding permission 'Permission object (233)'
Adding permission 'Permission object (234)'
Adding permission 'Permission object (235)'
Adding permission 'Permission object (236)'
Adding permission 'Permission object (237)'
Adding permission 'Permission object (238)'
Adding permission 'Permission object (239)'
Adding permission 'Permission object (240)'
Running post-migrate handlers for application shortener
Adding content type 'shortener | urlmap'
Adding content type 'shortener | urlprofile'
Adding permission 'Permission object (241)'
Adding permission 'Permission object (242)'
Adding permission 'Permission object (243)'
Adding permission 'Permission object (244)'
Adding permission 'Permission object (245)'
Adding permission 'Permission object (246)'
Adding permission 'Permission object (247)'
Adding permission 'Permission object (248)'
System check identified no issues (0 silenced).
test_event_get_date (databruce.tests.EventsTestCase.test_event_get_date)
Check create event and date. ... ERROR

======================================================================
ERROR: test_event_get_date (databruce.tests.EventsTestCase.test_event_get_date)
Check create event and date.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
    return self.cursor.execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\psycopg\cursor.py", line 97, in execute
    raise ex.with_traceback(None)
psycopg.errors.UndefinedTable: relation "events" does not exist
LINE 1: INSERT INTO "events" ("created_at", "updated_at", "event_num...
                    ^

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\databruce\tests.py", line 11, in setUp
    Events.objects.create(
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\models\query.py", line 665, in create
    obj.save(force_insert=True, using=self.db)
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\models\base.py", line 902, in save
    self.save_base(
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\models\base.py", line 1008, in save_base
    updated = self._save_table(
              ^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\models\base.py", line 1169, in _save_table
    results = self._do_insert(
              ^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\models\base.py", line 1210, in _do_insert
    return manager._insert(
           ^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\models\query.py", line 1873, in _insert
    return query.get_compiler(using=using).execute_sql(returning_fields)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\models\sql\compiler.py", line 1882, in execute_sql
    cursor.execute(sql, params)
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\backends\utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\backends\utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\backends\utils.py", line 100, in _execute
    with self.db.wrap_database_errors:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
    return self.cursor.execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\Documents\Software\Programming\Django\django-databruce\.venv\Lib\site-packages\psycopg\cursor.py", line 97, in execute
    raise ex.with_traceback(None)
django.db.utils.ProgrammingError: relation "events" does not exist
LINE 1: INSERT INTO "events" ("created_at", "updated_at", "event_num...
                    ^

----------------------------------------------------------------------
Ran 1 test in 0.008s

FAILED (errors=1)
Destroying test database for alias 'default' ('test_databruce')...

What app is your Events model in?
Is that app in your INSTALLED_APPS setting?
What does the model look like?
What is your DATABASES setting?

Events is in an app titled “databruce”, which is included in the INCLUDED_APPS setting (as databruce.apps.DatabruceConfig)

Events model looks like this:

class Events(BaseModel):
    num = models.IntegerField(db_column="event_num")
    id = models.TextField(primary_key=True, db_column="event_id")
    date = models.DateField(blank=True, default=None, db_column="event_date")

    early_late_choices = [
        ("Evening", "Evening"),
        ("Late", "Late"),
        ("Third", "Third"),
        ("Early", "Early"),
        ("Afternoon", "Afternoon"),
        ("Morning", "Morning"),
    ]

    early_late = models.CharField(blank=True, choices=early_late_choices, default=None)

    public = models.BooleanField(blank=True, default=False)

    artist = models.ForeignKey(
        to=Bands,
        on_delete=models.DO_NOTHING,
        db_column="artist",
    )

    url = models.TextField(blank=True, default=None)

    venue = models.ForeignKey(
        to=Venues,
        on_delete=models.DO_NOTHING,
        related_name="event_venue",
        db_column="venue_id",
        blank=True,
        default=None,
    )

    tour = models.ForeignKey(
        to="Tours",
        on_delete=models.DO_NOTHING,
        blank=True,
        default=None,
        db_column="tour_id",
    )

    leg = models.ForeignKey(
        to="TourLegs",
        on_delete=models.DO_NOTHING,
        blank=True,
        default=None,
        db_column="tour_leg",
    )

    run = models.ForeignKey(
        to="Runs",
        on_delete=models.DO_NOTHING,
        blank=True,
        default=None,
        db_column="run",
    )

    title = models.TextField(blank=True, default=None, db_column="event_title")

    note = models.TextField(blank=True, default=None)
    bootleg = models.BooleanField(blank=True, default=False)

    class Meta:
        managed = False
        db_table = "events"
        verbose_name_plural = "events"
        unique_together = (("id", "date", "url"),)
        ordering = ["id"]

DATABASES setting

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": os.getenv("DATABASE_NAME"),
        "USER": os.getenv("DATABASE_USER"),
        "PASSWORD": os.getenv("DATABASE_PASSWORD"),
        "HOST": "localhost",
        "PORT": "5432",
    },
}

Does this table exist in the regular (non-test) database? (Does your project work? Is it only the tests that are failing?)

What are the contents of the databruce.migrations.0001_initial file? Is that the only migration file for that app?

Table exists, and project is fully functional otherwise. I just wanted to take the opportunity to learn proper testing.

It is the only migration file for the app, it has create model statements for every model in the models.py file. The “Events” model is in there, so I’ve no idea why when trying to run tests it claims the relation doesn’t exist.

One thing I notice is that in models.py, the default “created_at” date is set to “datetime.now()”. But in the migration it is hardcoded to when the migration file was created. This is normal right?

That’s because you’re passing the output from the function.

Typically, for a default, you would want to pass the callable. (i.e. datetime.now, not datetime.now().)

I’d monitor the activity on the database to verify whether the SQL to create those models are being issued. I’d also verify the permissions on those tables. Check your PostgreSQL logs to see if you’ve already got any useful information in them.