Permintaan Anda tidak masuk akal.
DELETE FROM database_userprofile WHERE user.username = 'some';
^^^^
Di mana user berasal dari? Itu tidak dirujuk dalam kueri. Apakah ini kolom database_userprofile ? Jika demikian, Anda tidak dapat menulis user.username (kecuali jika itu adalah tipe komposit, dalam hal ini Anda harus menulis (user).username untuk memberitahu parser bahwa; tapi saya ragu itu tipe komposit).
Penyebab langsungnya adalah user adalah kata khusus
. Anda tidak dapat menggunakan nama itu tanpa mengutipnya:
DELETE FROM database_userprofile WHERE "user".username = 'some';
... namun, kueri ini tetap tidak masuk akal, hanya akan memberikan kesalahan yang berbeda:
regress=> DELETE FROM database_userprofile WHERE "user".username = 'some';
ERROR: missing FROM-clause entry for table "user"
LINE 1: DELETE FROM database_userprofile WHERE "user".username = 'so...
Tebakan liar saya adalah Anda mencoba melakukan penghapusan melalui gabungan. Saya berasumsi bahwa Anda memiliki tabel seperti:
CREATE TABLE "user" (
id serial primary key,
username text not null,
-- blah blah
);
CREATE TABLE database_userprofile (
user_id integer references "user"(id),
-- blah blah
);
dan Anda mencoba menghapus dengan kondisi di tabel lain.
Jika demikian, Anda tidak bisa cukup tulis user.username . Anda harus menggunakan:
DELETE FROM database_userprofile
USING "user"
WHERE database_userprofile.user_id = "user".id
AND "user".username = 'fred';
Anda akan melihat bahwa saya telah mengutip dua kali "pengguna". Itu karena itu adalah kata kunci dan tidak boleh benar-benar digunakan untuk nama tabel atau pengidentifikasi yang ditentukan pengguna lainnya. Mengutip dua kali memaksanya untuk ditafsirkan sebagai pengenal bukan kata kunci.