# psycopg2.errors.DatatypeMismatch: operator class "varchar\_pattern\_ops" does not accept data type integer

**URL:** <https://discuss.tryton.org/t/psycopg2-errors-datatypemismatch-operator-class-varchar-pattern-ops-does-not-accept-data-type-integer/7310>\
**Category:** Developer\
**Created:** [May 22, 2024, 1:22pm UTC](https://discuss.tryton.org/t/psycopg2-errors-datatypemismatch-operator-class-varchar-pattern-ops-does-not-accept-data-type-integer/7310 "2024-05-22T13:22:45Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![yarzai](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/yarzai/32/2767_2.png) [@yarzai](https://discuss.tryton.org/u/yarzai)\
**Post date:** [May 22, 2024, 1:22pm UTC](https://discuss.tryton.org/t/psycopg2-errors-datatypemismatch-operator-class-varchar-pattern-ops-does-not-accept-data-type-integer/7310/1 "2024-05-22T13:22:45Z")

</div>

Hi,  
The following is my model.

```auto
class HealthInstitutionSpecialties(ModelSQL, ModelView):
    "Health Institution Specialties"
    __name__ = "gnuhealth.institution.specialties"

    name = fields.Many2One("gnuhealth.institution", "Institution", required=True)
    specialty = fields.Many2One("gnuhealth.specialty", "Specialty", required=True)

    def get_rec_name(self, name):
        if self.specialty:
            return self.specialty.name

    @classmethod
    def __setup__ (cls):
        super(HealthInstitutionSpecialties, cls). __setup__ ()
        t = cls. __table__ ()
        cls._sql_constraints = [
            (
                "name_sp_uniq",
                Unique(t, t.name, t.specialty),
                "The Specialty already exists for this institution",
            ),
        ]

```

and when I want to activate it I get the following error:

```auto
Traceback (most recent call last):
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\protocols\wrappers.py", line 197, in wrapper
    return func(request, pool, *args, **kwargs)
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\protocols\dispatcher.py", line 196, in _dispatch
    result = rpc.result(meth(*c_args, **c_kwargs))
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\wizard\wizard.py", line 340, in execute
    result = wizard._execute(state_name)
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\wizard\wizard.py", line 380, in _execute
    result = self._execute(transition())
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\ir\module.py", line 505, in transition_upgrade
    pool.init(update=update, lang=lang)
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\pool.py", line 167, in init
    restart = not load_modules(
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\modules\ __init__.py", line 389, in load_modules
    _load_modules(update)
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\modules\ __init__.py", line 352, in _load_modules
    load_module_graph(graph, pool, update, lang)
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\modules\ __init__.py", line 253, in load_module_graph
    model._update_sql_indexes()
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\model\modelsql.py", line 517, in _update_sql_indexes
    table_h.set_indexes(indexes)
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\backend\postgresql\table.py", line 506, in set_indexes
    cursor.execute(
  File "d:\Milestone\umbrella\venv\lib\site-packages\trytond\backend\postgresql\database.py", line 69, in execute
    cursor.execute(self, sql, args)
psycopg2.errors.DatatypeMismatch: operator class "varchar_pattern_ops" does not accept data type integer

```

The following query gets executed in the database:  
`CREATE INDEX IF NOT EXISTS "idx_gnuhealth_institution_specialties_d884bc69b0c18974fe" ON "gnuhealth_institution_specialties" USING BTREE ("name" varchar_pattern_ops)`

What to do to get rid of the error!!!?

Thanks,

---

<div class="post-metadata">

**Author:** ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)\
**Post date:** [May 22, 2024, 1:34pm UTC](https://discuss.tryton.org/t/psycopg2-errors-datatypemismatch-operator-class-varchar-pattern-ops-does-not-accept-data-type-integer/7310/2 "2024-05-22T13:34:26Z")

</div>

It is a GNU Health bug, it should not define a `Many2One` as [`Model._rec_name`](https://docs.tryton.org/latest/server/ref/models.html#trytond.model.Model._rec_name): see [Document that \_rec\_name must point to a Char field (!1479) · Merge requests · Tryton / Tryton · GitLab](https://foss.heptapod.net/tryton/tryton/-/merge_requests/1479)

---

<div class="post-metadata">

**Author:** ![system](https://discuss-cdn.tryton.org/uploads/default/original/1X/c6f8ec0a40525cdcd50058c734283450a4b3d38b.png) [@system](https://discuss.tryton.org/u/system)\
**Post date:** [May 23, 2024, 5:53am UTC](https://discuss.tryton.org/t/psycopg2-errors-datatypemismatch-operator-class-varchar-pattern-ops-does-not-accept-data-type-integer/7310/3 "2024-05-23T05:53:51Z")

</div>

This topic was automatically closed 12 hours after the last reply. New replies are no longer allowed.
