Ik krijg steeds MySQL-fout #1054 wanneer ik deze update-query probeer uit te voeren:
UPDATE MASTER_USER_PROFILE, TRAN_USER_BRANCH
SET MASTER_USER_PROFILE.fellow=`y`
WHERE MASTER_USER_PROFILE.USER_ID = TRAN_USER_BRANCH.USER_ID
AND TRAN_USER_BRANCH.BRANCH_ID = 17
Het is waarschijnlijk een syntaxisfout, maar ik heb geprobeerd in plaats daarvan een inner join en andere wijzigingen te gebruiken, maar ik krijg steeds dezelfde melding:
Unknown column 'y' in 'field list'
Antwoord 1, autoriteit 100%
Probeer verschillende aanhalingstekens voor “y” te gebruiken, aangezien het aanhalingsteken voor de identificatie de backtick ( ` ) is. Anders “denkt” MySQL dat u naar een kolom met de naam “y” verwijst.
Zie ook MySQL 5-documentatie
Antwoord 2, autoriteit 29%
Sluit een tekenreeks die moet worden doorgegeven aan de MySQL-server tussen enkele aanhalingstekens, bijvoorbeeld:
$name = "my name"
$query = " INSERT INTO mytable VALUES ( 1 , '$name') "
Merk op dat hoewel de zoekopdracht tussen dubbele aanhalingstekens staat, u moet elke tekenreeks tussen enkele aanhalingstekens plaatsen.
Antwoord 3, autoriteit 9%
U kunt uw keuze van aanhalingstekens controleren (gebruik dubbele/enkele aanhalingstekens voor waarden, tekenreeksen, enz. en backticks voor kolomnamen).
Omdat je alleen de tabel master_user_profile
wilt bijwerken, raad ik een geneste zoekopdracht aan:
UPDATE
master_user_profile
SET
master_user_profile.fellow = 'y'
WHERE
master_user_profile.user_id IN (
SELECT tran_user_branch.user_id
FROM tran_user_branch WHERE tran_user_branch.branch_id = 17);
Antwoord 4, autoriteit 2%
In mijn geval werd dit veroorzaakt door een onzichtbare volgspatie aan het einde van de kolomnaam. Controleer gewoon of je in plaats daarvan echt “y” of “y” gebruikt.
Antwoord 5
Terwijl ik werkte aan een .Net-app die eerst met EF-code was gebouwd, kreeg ik deze foutmelding toen ik mijn migratie probeerde toe te passen waarbij ik een Sql("UPDATE tableName SET columnName = value");
had verklaring.
Blijkbaar heb ik de kolomnaam verkeerd gespeld.
Antwoord 6
Gewoon mijn ervaring hierover delen. Ik had hetzelfde probleem. De insert- of update-instructie is correct. En ik heb ook de codering gecontroleerd. De kolom bestaat.
Vervolgens! Ik kwam erachter dat ik verwees naar de kolom in mijn Trigger.
U moet ook uw trigger controleren om te zien of een script verwijst naar de kolom waarmee u het probleem ondervindt.
Antwoord 7
Als het slaapstand en JPA is. controleer de naam van de doorverwezen tabel en de kolommen komen mogelijk niet overeen
Antwoord 8
Gewoon mijn ervaring hierover delen. Ik had hetzelfde probleem. Mijn vraag was als volgt:
select table1.column2 from table1
Tabel1 had echter geen kolom2.
Antwoord 9
In mijn geval zocht de Hibernate naar kolommen in een snake-case, zoals create_date
, terwijl de kolommen in de DB in de camel-case waren, bijvoorbeeld createDate
.
Toevoegen
spring:
jpa:
hibernate:
naming: # must tell spring/jpa/hibernate to use the column names as specified, not snake case
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
naar de application.yml
hielp het probleem op te lossen.
Antwoord 10
Ook ik kreeg dezelfde fout, het probleem in mijn geval is dat ik de kolomnaam in de GROUP BY
-clausule heb opgenomen en deze fout heeft veroorzaakt. Dus verwijderde de kolom uit de GROUP BY
-clausule en het werkte!!!
Antwoord 11
Ik kreeg deze fout bij het gebruik van GroupBy via LINQ op een MySQL-database. Het probleem was dat de anonieme objecteigenschap die door GroupBy werd gebruikt, niet overeenkwam met de naam van de databasekolom. Opgelost door de naam van de anonieme eigenschap te wijzigen zodat deze overeenkomt met de kolomnaam.
.Select(f => new
{
ThisPropertyNameNeedsToMatchYourColumnName = f.SomeName
})
.GroupBy(t => t.ThisPropertyNameNeedsToMatchYourColumnName);
Antwoord 12
Een zoekopdracht als deze zal ook de fout veroorzaken:
SELECT table1.id FROM table2
Waar de tabel is opgegeven in kolom selecteren en niet is opgenomen in de from-clausule.