diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 4cf9422..a2bab96 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -18,6 +18,7 @@ Added
 Fixed
 ^^^^^
 - `TimeField` for `MySQL` will return `datetime.timedelta` object instead of `datetime.time` object.
+- Fix on conflict do nothing. (#1122)
 
 0.19.0
 ------
diff --git a/tortoise/backends/base/executor.py b/tortoise/backends/base/executor.py
index 9dc7590..3cfdec0 100644
--- a/tortoise/backends/base/executor.py
+++ b/tortoise/backends/base/executor.py
@@ -208,7 +208,7 @@ class BaseExecutor:
             .insert(*[self.parameter(i) for i in range(len(columns))])
         )
         if ignore_conflicts:
-            query = query.do_nothing()
+            query = query.on_conflict().do_nothing()
         return query
 
     async def _process_insert_result(self, instance: "Model", results: Any) -> None:
diff --git a/tortoise/backends/base_postgres/executor.py b/tortoise/backends/base_postgres/executor.py
index 39dab14..db34a37 100644
--- a/tortoise/backends/base_postgres/executor.py
+++ b/tortoise/backends/base_postgres/executor.py
@@ -46,7 +46,7 @@ class BasePostgresExecutor(BaseExecutor):
             if generated_fields:
                 query = query.returning(*generated_fields)
         if ignore_conflicts:
-            query = query.do_nothing()
+            query = query.on_conflict().do_nothing()
         return query
 
     async def _process_insert_result(self, instance: Model, results: Optional[dict]) -> None:

diff --git a/tests/test_bulk.py b/tests/test_bulk.py
index 0af5eea..a0875db 100644
--- a/tests/test_bulk.py
+++ b/tests/test_bulk.py
@@ -132,6 +132,7 @@ class TestBulk(test.TruncationTestCase):
     async def test_bulk_create_ignore_conflicts(self):
         name1 = UniqueName(name="name1")
         name2 = UniqueName(name="name2")
+        await UniqueName.bulk_create([name1, name2])
         await UniqueName.bulk_create([name1, name2], ignore_conflicts=True)
         with self.assertRaises(IntegrityError):
             await UniqueName.bulk_create([name1, name2])

bulk_create ignore_conflicts param does not change query
**Describe the bug**
The ignore_conflicts in the bulk_create function does not change the sql query. It does not add ON CONFLICT DO NOTHING

**To Reproduce*
Using version 0.19.0 and postgres executor
```
print(SomeModel.bulk_create(objects=objects, ignore_conflicts=True).sql()
```

**Expected behavior**
Add "ON CONFLICT DO NOTHING" at the of insert query

tests/test_bulk.py::TestBulk::test_bulk_create_ignore_conflicts
tests/test_bulk.py::TestBulk::test_bulk_create tests/test_bulk.py::TestBulk::test_bulk_create_fail tests/test_bulk.py::TestBulk::test_bulk_create_in_transaction tests/test_bulk.py::TestBulk::test_bulk_create_in_transaction_fail tests/test_bulk.py::TestBulk::test_bulk_create_mix_specified tests/test_bulk.py::TestBulk::test_bulk_create_more_that_one_update_fields tests/test_bulk.py::TestBulk::test_bulk_create_update_fields tests/test_bulk.py::TestBulk::test_bulk_create_uuidpk tests/test_bulk.py::TestBulk::test_bulk_create_uuidpk_fail tests/test_bulk.py::TestBulk::test_bulk_create_uuidpk_in_transaction tests/test_bulk.py::TestBulk::test_bulk_create_uuidpk_in_transaction_fail tests/test_bulk.py::TestBulk::test_bulk_create_with_batch_size tests/test_bulk.py::TestBulk::test_bulk_create_with_specified