OperationalError: PRIMARY KEY missing on table 
When does that operational error occur? Without the full traceback it's impossible to tell what happened. Operational error typically is raised by your driver - you're violating a constraint implied by something in your schema.

I believe, looking at the sqlite source code, that it's the use of "without rowid" and primary-key = false that are the issue. If you have no primary key, but you are also telling sqlite "without rowid" then it's going to complain, in other words. Give it a primary key or remove the "without rowid" bit and you should be OK. Oh yes you're totally right. Thanks!
I get the OP title error while creating a table and setting the Meta to `primary_key = False` see the following MCVE sample:

```
from peewee import *

db = SqliteDatabase('market_data.db')


class BaseModel(Model):
    """
    Base reusable model.
    """
    class Meta:
        database = db
        legacy_table_names = False


class MarketInstrument(BaseModel):
    """
    Market instrument model.
    """
    id = BigAutoField(primary_key=True)
    name = CharField(max_length=20, null=False, index=True)


class MarketInstrumentData(BaseModel):
    """
    Market instrument time series data.
    """
    market_instrument = ForeignKeyField(MarketInstrument, backref='data')
    timestamp = DateTimeField(null=False, index=True)
    value = DecimalField(null=False, decimal_places=10)

    class Meta:
        """
        Doesn't require a PK
        """
        primary_key = False
        without_rowid = True


db.create_tables([MarketInstrument, MarketInstrumentData])
```

This leads to the error:
```
peewee.OperationalError: PRIMARY KEY missing on table market_instrument_data`
```

Indeed, I'm explicitly setting the `MarketInstrumentData` table not to have a PK since it isn't only unnecessary but also ER design-wise incorrect. It's a weak entity and it contains a FK to the strong entity `MarketInstrument` and that's all is needed. 