[MYSQL] Data truncated for column x, hoe dit oplossen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 19-09 13:37
Beste Tweakers,

Voor mijn forum gebruik ik een karma plugin, helaas is de support op de plugin niet goed genoeg om het volgende probleem op te lossen. Wanneer ik een bepaalde actie uitvoer krijg ik de volgende foutmelding:
code:
1
2
3
4
5
Data truncated for column 'post_karma_search' at row 1 [1265]

SQL

UPDATE phpbb_posts SET post_karma = post_karma - 1, post_karma_powered = post_karma_powered - 1, post_karma_count = post_karma_count - 1, post_karma_search = (post_karma / post_karma_count), post_karma_search_powered = (post_karma_powered / post_karma_count) WHERE post_id = 33656

Wanneer ik op deze foutmelidng google lijkt het een mysql bug. Maar ik heb zojuist ook mijn complete server geupdate zonder dat deze foutmelding verdwijnt. Ook het gebruik in de query van ROUND, TRUNCATE , vergroten van veld van medium int naar big int levert geen oplossing op.

Graag wil ik weten of deze fout komt door een bug in mysql of door een fout in de query. Ook ben ik benieuwd hoe dit probleem opgelost kan worden.

Acties:
  • 0 Henk 'm!

  • OnTracK
  • Registratie: Oktober 2002
  • Nu online
Je doet een deling in een veld waar waarschijnlijk alleen maar ints (hele getallen) in passen. Dus op het moment dat de deling niet rond is krijg je deze melding.

het gebruik van ROUND zou denk ik wel een oplossing zijn, maar dan niet voor de eerste kolom. De laatste twee bevatten een deling

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Wat zijn de datatypen van je velden?

Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 19-09 13:37
OnTracK schreef op vrijdag 19 maart 2010 @ 13:17:
Je doet een deling in een veld waar waarschijnlijk alleen maar ints (hele getallen) in passen. Dus op het moment dat de deling niet rond is krijg je deze melding.
Dit heb ik zojuist ook gevonden, dus dat zou kunnen kloppen.
het gebruik van ROUND zou denk ik wel een oplossing zijn, maar dan niet voor de eerste kolom. De laatste twee bevatten een deling
Hoe zou ik de query dan moeten aanpassen? Want ik heb al verschillende opties geprobeerd. De meest logische oplossing heb ik hieronder even geplaatst, maar ook dat werkt niet. Heb je een suggesties hoe het wel zou kunnen? En hoe kan het dat wanneer je deze query in phpMyAdmin uitvoerd je geen error krijgt maar wanneer deze via php wordt uitgevoerd wel?!

code:
1
UPDATE phpbb_posts SET post_karma = post_karma - 1, post_karma_powered = post_karma_powered - 1, post_karma_count = post_karma_count - 1, post_karma_search = [b]ROUND[/b]((post_karma / post_karma_count)), post_karma_search_powered = [b]ROUND[/b]((post_karma_powered / post_karma_count)) WHERE post_id = 33656


De data typen van de velden uit de query zijn:
code:
1
2
3
4
5
  `post_karma` mediumint(8) NOT NULL default '0',
  `post_karma_powered` mediumint(8) NOT NULL default '0',
  `post_karma_count` mediumint(8) unsigned NOT NULL default '0',
  `post_karma_search` mediumint(8) NOT NULL default '0',
  `post_karma_search_powered` mediumint(8) NOT NULL default '0',

[ Voor 12% gewijzigd door Erpenator2 op 19-03-2010 13:32 ]


Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Erpenator2 schreef op vrijdag 19 maart 2010 @ 13:27:
Hoe zou ik de query dan moeten aanpassen? Want ik heb al verschillende opties geprobeerd. De meest logische oplossing heb ik hieronder even geplaatst, maar ook dat werkt niet. Heb je een suggesties hoe het wel zou kunnen? En hoe kan het dat wanneer je deze query in phpMyAdmin uitvoerd je geen error krijgt maar wanneer deze via php wordt uitgevoerd wel?!
Bij mijn weten is het dan ook geen fatal error, maar een warning. Ik weet niet precies hoe PHP ermee omgaat, maar vak is de update gewoon uitgevoerd.

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Je kunt het resultaat van een deling natuurlijk niet opslaan in een veld van type int, dat is natuurlijk stom. Alles na de komma wordt dan weg gekieperd.

[google=define:truncate]: "To shorten something as if by cutting off part of it."

Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 19-09 13:37
HuHu schreef op vrijdag 19 maart 2010 @ 14:33:
Je kunt het resultaat van een deling natuurlijk niet opslaan in een veld van type int, dat is natuurlijk stom. Alles na de komma wordt dan weg gekieperd.

[google=define:truncate]: "To shorten something as if by cutting off part of it."
Dat weet ik dat dit niet kan. Het is ook niet erg dat hij alles achter de komma verwijderd. Ik heb het nu eindelijk opgelost gekregen door IGNORE toe te voegen aan de update query. Nu lijkt alles goed te gaan . Niet te meest mooie oplossing maar voldoende voor nu.
Pagina: 1