MySQL Fehlermeldung #1426

ittcom

Registered User
Hallo,
ich habe folgendes Problem wenn ich Datenbanken einpielen möchte erhalte ich diese Fehlermeldung:
#1426 - Too big precision 250 specified for column 'userid'. Maximum is 65.

Wenn ich in der Fehlerliste nachschaue steht zu #1426

Fehler: 1426 SQLSTATE: 42000 (ER_TOO_BIG_PRECISION)

Meldung: Zu große Genauigkeit %d für Feld '%s' angegeben. Maximum ist %d

Nun meine Frage:
Was muss gemacht werden und kann ich das selber machen oder hat mein Hoster einen Fehler gemacht?

Gruss ittcom
 
Du willst gerne noch das Statement posten und uns den Datentyp der angemeckerten Spalte mitteilen.
 
Hallo elias5000,

wenn ich zum Beispiel diese Daten einspielen will:
Code:
CREATE TABLE `SPONSOR_config` (
  `id` int(10) NOT NULL auto_increment,
  `seitenname` varchar(255) default NULL,
  `seitenstart` varchar(255) default NULL,
  `scripturl` varchar(255) default NULL,
  `adminmail` varchar(255) default NULL,
  `refverdienst` int(2) NOT NULL default '0',
  `minauszahlung` decimal(250,0) NOT NULL default '0',
  `refpoints_aus` decimal(250,0) NOT NULL default '0',
  `lastupdate` varchar(255) NOT NULL default '0',
  `interface_anfragen` int(4) NOT NULL default '0',
  `user_premium_gold` decimal(250,0) NOT NULL default '0',
  `user_premium_silver` decimal(250,0) NOT NULL default '0',
  `user_premium_bronze` decimal(250,0) NOT NULL default '0',
  `sponsor_premium_gold` decimal(250,0) NOT NULL default '0',
  `sponsor_premium_silver` decimal(250,0) NOT NULL default '0',
  `sponsor_premium_bronze` decimal(250,0) NOT NULL default '0',
  `user_seite_kost` decimal(250,0) NOT NULL default '0',
  `user_gold_prozent` decimal(2,0) NOT NULL default '0',
  `user_silver_prozent` decimal(2,0) NOT NULL default '0',
  `user_bronze_prozent` decimal(2,0) NOT NULL default '0',
  `sponsor_gold_prozent` decimal(2,0) NOT NULL default '0',
  `sponsor_silver_prozent` decimal(2,0) NOT NULL default '0',
  `sponsor_bronze_prozent` decimal(2,0) NOT NULL default '0',
  `verstoss_meldung` int(2) NOT NULL default '25',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
Dann bekomme ich diese Fehlermeldung:

SQL-Befehl:
Code:
CREATE TABLE `SPONSOR_config` (

`id` int( 10 ) NOT NULL AUTO_INCREMENT ,
`seitenname` varchar( 255 ) default NULL ,
`seitenstart` varchar( 255 ) default NULL ,
`scripturl` varchar( 255 ) default NULL ,
`adminmail` varchar( 255 ) default NULL ,
`refverdienst` int( 2 ) NOT NULL default '0',
`minauszahlung` decimal( 250, 0 ) NOT NULL default '0',
`refpoints_aus` decimal( 250, 0 ) NOT NULL default '0',
`lastupdate` varchar( 255 ) NOT NULL default '0',
`interface_anfragen` int( 4 ) NOT NULL default '0',
`user_premium_gold` decimal( 250, 0 ) NOT NULL default '0',
`user_premium_silver` decimal( 250, 0 ) NOT NULL default '0',
`user_premium_bronze` decimal( 250, 0 ) NOT NULL default '0',
`sponsor_premium_gold` decimal( 250, 0 ) NOT NULL default '0',
`sponsor_premium_silver` decimal( 250, 0 ) NOT NULL default '0',
`sponsor_premium_bronze` decimal( 250, 0 ) NOT NULL default '0',
`user_seite_kost` decimal( 250, 0 ) NOT NULL default '0',
`user_gold_prozent` decimal( 2, 0 ) NOT NULL default '0',
`user_silver_prozent` decimal( 2, 0 ) NOT NULL default '0',
`user_bronze_prozent` decimal( 2, 0 ) NOT NULL default '0',
`sponsor_gold_prozent` decimal( 2, 0 ) NOT NULL default '0',
`sponsor_silver_prozent` decimal( 2, 0 ) NOT NULL default '0',
`sponsor_bronze_prozent` decimal( 2, 0 ) NOT NULL default '0',
`verstoss_meldung` int( 2 ) NOT NULL default '25',
PRIMARY KEY ( `id` ) ,
UNIQUE KEY `id` ( `id` ) 
) TYPE = MYISAM AUTO_INCREMENT =2;


MySQL meldet:

#1426 - Too big precision 250 specified for column 'minauszahlung'. Maximum is 65.
 
Last edited by a moderator:
MySQL bemängelt diese Zeile:
Code:
`minauszahlung` decimal( 250, 0 ) NOT NULL default '0',
Es kann nicht mehr als 65 Stellen für diesen Datentyp in der Datenbank abbilden.
 
Was steht denn in diesen Feldern drin? 65 Stellen sind doch schon ganz ordentlich.

Ich hab das mal bei Wikipedia nachgeschlagen. Leider ist da schon bei 10^24 und der Vorsilbe Yotta (Quadrillion) schluss. Gibt es für 10^250 eigentlich eine passende Vorsilbe oder ist das eine so astronomisch hohe Zahl, dass sich da noch keiner Gedanken gemacht hat?
Vieleicht sollten wir die ittcom taufen. Dann braucht man keine Parsec mehr, um Abstände zwischen Sonnensystemen anzugeben, sondern nimmt einfach Ittcommeter. ;)

Edit:
http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html said:
The declaration syntax for a DECIMAL column is DECIMAL(M,D). The ranges of values for the arguments in MySQL 5.1 are as follows:

* M is the maximum number of digits (the precision). It has a range of 1 to 65. (Older versions of MySQL allowed a range of 1 to 254.)
* D is the number of digits to the right of the decimal point (the scale). It has a range of 0 to 30 and must be no larger than M.

Ein Lösungsansatz wäre, die Precision der Spalten auf 65 zu ändern.
 
Last edited by a moderator:
ich habe mal auf der Fehlerdoku geschaut und da steht

Fehler: 1426 SQLSTATE: 42000 (ER_TOO_BIG_PRECISION)

Meldung: Zu große Genauigkeit %d für Feld '%s' angegeben. Maximum ist %d

aber wo muss das Maximum ist %d dann geändert werden?
 
Was steht denn in diesen Feldern drin?
Die Frage steht immer noch.
Reichen dir 65 Stellen nicht? Wenn 65 Stellen reichen, dann lies nochmal diesen Satz:

elias5000 said:
Ein Lösungsansatz wäre, die Precision der Spalten auf 65 zu ändern.

aber wo muss das Maximum ist %d dann geändert werden?
Lt. Doku ist das Maximum für MySQL 5.x 65 Stellen. Also entweder eine ältere Version nehmen oder einen anderen Datentyp als DECIMAL.

Und so richtig sehe ich nicht, dass derjenige, der die Tabellendefinition gemacht hat sich da wirklich gedanken dazu machte. Die Prozent-Spalten können keine 100 aufnehmen, sondern lediglich eine 99.
Dafür dürfen die User-Spalten 250 Stellen haben - wenn das die Zahl der User für den Sponsor sein soll (ich rate mal ganz frei, was da drin steht), dann kann der jeder Bakterie dieses Planeten einen Account verpassen.
 
Um das mal klarzustellen, Du möchtest eine Zahl mit 250 Stellen in einer Datenbank speichern. Das ist wäre bspw. eine solche Zahl:

1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111

Bist Du Dir sicher, dass Du das willst?

Grüße
Sinepp
 
Back
Top