Ошибка "SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'TABLE_NAME' in where clause is ambiguous" указывает, что столбец `TABLE_NAME` упоминается в предложении `WHERE` вашего SQL-запроса, и СУБД не может определить, к какой именно таблице относится этот столбец, потому что в запросе участвует более одной таблицы и столбец с таким именем есть как минимум в двух таблицах.
Чтобы исправить эту ошибку, необходимо уточнить имя таблицы в запросе, добавив к имени столбца префикс с именем таблицы или её алиасом. Например, вместо `SELECT * FROM table1 JOIN table2 ON table1.id = table2.table1_id WHERE TABLE_NAME = 'value'` следует использовать `SELECT * FROM table1 JOIN table2 ON table1.id = table2.table1_id WHERE table1.TABLE_NAME = 'value'`. Таким образом, СУБД будет точно знать, к какой таблице относится столбец `TABLE_NAME`.
Если вы столкнулись с этой ошибкой при выполнении миграции в Symfony с использованием ORM Doctrine, это может произойти по следующим причинам:
1. В вашем DQL (Doctrine Query Language) запросе, который используется для определения изменений в схеме базы данных при создании миграции, есть неоднозначность имен столбцов.
2. В кастомном SQL-запросе, который вы выполняете в рамках миграции, также не ясно указано, к какой таблице принадлежит столбец.
Для решения этой проблемы, необходимо выполнить следующие действия:
1. Определите, в какой части вашей миграции возникает ошибка.
2. Уточните имя таблицы в запросе, добавив к имени столбца префикс с именем таблицы или с алиасом.
3. Убедитесь, что такое изменение не противоречит вашей бизнес-логике и что после этого изменения запрос выполняется корректно.
4. Пересоздайте миграцию и выполните её снова.
Пример исправления в DQL может выглядеть так:
```php
$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder
->select('t')
->from('YourEntity', 't')
->leftJoin('t.relatedEntity', 'r')
->where('t.TABLE_NAME = :value') // Уточняем, что TABLE_NAME принадлежит сущности 't'
->setParameter('value', $value);
$results = $queryBuilder->getQuery()->getResult();
```
Если вы испытываете трудности с определением, где именно в коде возникает ошибка, следует взглянуть на стек вызовов или на SQL-логи, чтобы понять, какой запрос вызывает проблему.
Это позволит вам точно локализовать место в коде миграции, которое вызывает ошибку, и исправить в нём запрос.