[eluser]WanWizard[/eluser]
I think in both cases you don't have a table with 'id' as primary key.
Datamapper requires ALL tables to have a primary key column called 'id', which ideally is auto_increment.
The delete() method uses that ($d->id in this case) to check if a primary key is present, because if not, there is nothing to delete.