MySQL Replace

  • Hi.


    Versuchte eben die folgende Sachen zu ersetzen:


    Erst, die Datenbank ausgewählt:


    Code
    USE ts3;


    Dann wollte ich in der server_properties die download quota auf 0 setzen für alle server.


    Code
    update server_properties set virtualserver_download_quota = replace(virtualserver_download_quota, '11000000', '0');


    Es kommt als Fehler:


    Code
    ERROR 1054 (42S22): Unknown column 'virtualserver_download_quota' in 'field list'


    :( warum

    • Offizieller Beitrag

    Hallo,


    dein Befehl kann gar nicht funktionieren, da die Tabelle wie folgt aufgebaut ist:

    Code
    mysql> DESCRIBE server_properties;+-----------+------------------+------+-----+---------+-------+| Field     | Type             | Null | Key | Default | Extra |+-----------+------------------+------+-----+---------+-------+| server_id | int(10) unsigned | YES  | MUL | NULL    |       || id        | int(10) unsigned | YES  | MUL | NULL    |       || ident     | varchar(100)     | NO   |     | NULL    |       || value     | varchar(2048)    | YES  |     | NULL    |       |+-----------+------------------+------+-----+---------+-------+4 rows in set (0.00 sec)


    Das was du suchst, sieht in der Tabelle so aus:

    Code
    mysql> SELECT * FROM server_properties WHERE ident="virtualserver_download_quota";+-----------+------+------------------------------+----------------------+| server_id | id   | ident                        | value                |+-----------+------+------------------------------+----------------------+|         3 |    3 | virtualserver_download_quota | 18446744073709551615 ||         0 |    0 | virtualserver_download_quota | 18446744073709551615 ||         5 |    5 | virtualserver_download_quota | 18446744073709551615 ||         1 |    1 | virtualserver_download_quota | 18446744073709551615 ||         4 |    4 | virtualserver_download_quota | 18446744073709551615 ||         2 |    2 | virtualserver_download_quota | 18446744073709551615 |+-----------+------+------------------------------+----------------------+6 rows in set (0.00 sec)


    Daher heißt dein Befehl auch wie folgt:

    SQL
    UPDATE server_properties SET value="0" WHERE ident="virtualserver_download_quota";


    Dieser Befehl setzt dann für ALLE virtuellen Server die Download-Quota auf 0. Wenn du es nur für spezielle, also ein paar virtuelle Server gesetzt haben möchtest, musst du den Befehl noch etwas optimieren. Zum Beispiel willst du alle virtuellen Server, die eine kleinere SID als 3 haben:

    SQL
    UPDATE server_properties SET value="0" WHERE ident="virtualserver_download_quota" AND server_id<3;

    Viele Grüße,
    Sebbo

    ---

    DevOps Engineer <3