Stránka 1 z 8

PEX via MySQL - Migrace (2.díl)

Napsal: 09 črc 2012, 20:04
od Qentus
Miniseriál o PEX a MySQL:
- PEX via MySQL - Základy (1.díl)
- PEX via MySQL - Migrace (2.díl)



Migrace
V tomto díle se zaměřím na převod soubor -> Databáze.

Předpoklady:
- nainstalovaný PEX a pravomoce v souboru
- přístup do databáze

Doporučuji provádět změny se zamknutým serverem (whitelist), kdyby nahodou něco nešlo podle plánu.
Udělejte si zálohu celé složky PermissionsEx v adresáři s pluginy!

Takže server je připravený na převod, co dále?
1.krok
- do konzole napíšeme pex dump sql "permissions.sql" (nebo ve hře /pex dump sql "permissions.sql")
- pokud to nevypíše žádnou chybu, tak máme ve složce PermissionsEx připravený soubor permissions.sql který později využijeme

2.krok
- potřebujeme PEX nastavit tak, aby pracoval s Databází
- to provedeme celkem jednoduše - stačí pozměnit soubor config.yml v adresáři PEX
- toto je můj config - vysvětlíme si co kde změnit
Spoiler: zobrazit

Kód: Vybrat vše

permissions:
  basedir: plugins/PermissionsEx
  backend: sql
  backends:
    sql:
      driver: mysql
      uri: mysql://127.0.0.1:3306/minecraft
      user: minecraft
      password: *******
  superperms:
    disable-unmatched: false
    enable: true
    matched-permissions: true
    debug: false
    raw-permissions: true
    strict-mode: false
    parent-nodes: true
  createUserRecords: false
  allowOps: true
  debug: false

- na řádku "uri" upravíme adresu tak, aby odkazovala na naši databázi, za lomítko napíšeme název databáze (v mém případě "minecraft")
- za "user: " napíšeme jméno uživatele databáze
- za "password: " napíšeme heslo uživatele k databázi
- soubor uložíme, dáme restart/reload serveru a koukneme jestli se nám v databázi vytvořily tabulky permissions, permissions_entity a permissions_inheritance

3.krok
- před dalším postupem je potřeba vyprázdnit všechny tabulky, které se vytvořily, jinak vám to bude házet chybu
(u tabulek začínajících na permissions klikneme na "Vyprázdnit")
- nyní máme vše připraveno a můžeme přejít k převodu dat ze souboru do databáze
- otevřeme soubor permissions.sql v nějakém textovém editoru
- měl by obsahovat něco jako

Kód: Vybrat vše

INSERT INTO `permissions_inheritance` ( `child`, `parent`, `type` ) VALUES ( 'AnotherPlayer', 'default',  1);

- toho se vůbec nelekejte
- přes web se dostaneme do databáze, ve které máme připravené tabulky
- v menu nahoře najdeme kouzelné tlačítko "SQL"
- otevře se nám tato stránka
Spoiler: zobrazit
Obrázek

- v souboru permissions.sql označíme celý obsah, zkopírujeme a vložíme do textového pole na stránce
- klikneme na tlačítko "Proveď" a pokud to nenapíše žádnou chybu, tak restartujeme server a máme hotovo

Přečtěte si prosím 1. díl než se budete na něco ptát.
Je velká šance, že jsem něco zapomněl/přehlídl, takže mě můžete opravit

Možné problémy
Spoiler: zobrazit
MySQL hlásí něco o duplikaci
- asi jste tlačítko "proveď" stiskli 2x
- vyprázdněte tabulky od PEX a SQL script vložte znova

Nefunguje mi automatické VIP
- upravte php soubor do této podoby

Kód: Vybrat vše

// SMS PLATBA 50 CZK / 2 EUR
  case 23:
    $commands[] = "pex user ".$player." group add jmeno_skupiny \"\" \"pocet_sekund\"";
    $commands[] = "broadcast Hrac ".$player." si aktivoval VIP!";

- VIP se dá pro všechny světy
- když má být VIP jen pro určitý svět, tak to bude vypadat takto

Kód: Vybrat vše

// SMS PLATBA 50 CZK / 2 EUR
  case 23:
    $commands[] = "pex user ".$player." group add jmeno_skupiny \"jmeno_sveta\" \"pocet_sekund\"";
    $commands[] = "broadcast Hrac ".$player." si aktivoval VIP!";


Za/před jménem mám napsáno "Null"
- chyba je způsobena převodem do Databáze
- koukněte do tabulky permissions_entity a vše, kde je "Null", smažte (jen daná políčka přepište, nemažte celý záznam


PS.: Každý bod karmy potěší

Re: PEX via MySQL - Migrace (2.díl)

Napsal: 09 črc 2012, 20:39
od zdenda204
Supr !
Nahodil jsem to během 20s.
Díky za jednoduchej návod.

Re: PEX via MySQL - Migrace (2.díl)

Napsal: 09 črc 2012, 20:44
od Qentus
To jsem rád. Až budu mít čas, tak přichystám další díl obsahující triky a tipy pro usnadnění života.

Re: PEX via MySQL - Migrace (2.díl)

Napsal: 09 črc 2012, 20:52
od Welton123
Když dávám do DB toto:

Kód: Vybrat vše

INSERT INTO `permissions_entity` ( `name`, `type`, `prefix`, `suffix` ) VALUES ( 'karbon222', 1, '','' );
INSERT INTO `permissions_inheritance` ( `child`, `parent`, `type` ) VALUES ( 'karbon222', 'Admin',  1);
INSERT INTO `permissions_entity` ( `name`, `type`, `prefix`, `suffix` ) VALUES ( 'Welton123', 1, '','' );
INSERT INTO `permissions_inheritance` ( `child`, `parent`, `type` ) VALUES ( 'Welton123', 'Admin',  1);
INSERT INTO `permissions_entity` ( `name`, `type`, `prefix`, `suffix` ) VALUES ( 'coolkiller', 1, '','' );
INSERT INTO `permissions_inheritance` ( `child`, `parent`, `type` ) VALUES ( 'coolkiller', 'MOD',  1);
INSERT INTO `permissions_entity` ( `name`, `type`, `prefix`, `suffix` ) VALUES ( 'Trias_cz', 1, '','' );
INSERT INTO `permissions_inheritance` ( `child`, `parent`, `type` ) VALUES ( 'Trias_cz', 'MOD',  1);
INSERT INTO `permissions_entity` ( `name`, `type`, `prefix`, `suffix` ) VALUES ( 'MINIME', 1, '','' );
INSERT INTO `permissions_inheritance` ( `child`, `parent`, `type` ) VALUES ( 'MINIME', 'Hrac',  1);
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value` ) VALUES ('MINIME', 1, 'group-VIP-until', 'SkyBlock_nether', '1344333889' );
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value` ) VALUES ('MINIME', 1, 'group-VIP-until', 'SkyBlock', '1344333887' );
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value` ) VALUES ('MINIME', 1, 'group-VIP-until', 'SkyBlock_the_end', '1344333891' );
INSERT INTO `permissions_entity` ( `name`, `type`, `prefix`, `suffix`, `default` ) VALUES ( 'default', 0, '','', 1 );
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('default', 0, 'modifyworld.*', '', '');
INSERT INTO `permissions_entity` ( `name`, `type`, `prefix`, `suffix`, `default` ) VALUES ( 'Hrac', 0, '&8','null', 0 );
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('Hrac', 0, 'multiverse.access.World_the_end', '', '');
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('Hrac', 0, 'multiverse.access.World_nether', '', '');
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('Hrac', 0, 'multiverse.access.SkyBlockMultiplayer', '', '');
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('Hrac', 0, 'multiverse.access.World', '', '');
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('Hrac', 0, 'stargate.world.*', '', '');
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('Hrac', 0, 'stargates.use', '', '');
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('Hrac', 0, 'stargate.use', '', '');
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('Hrac', 0, 'falsebook.blocks.lift.use', '', '');
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('Hrac', 0, 'essentials.sign.kit', '', '');
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('Hrac', 0, 'essentials.tpdeny', '', '');
INSERT INTO `permissions` ( `name`, `type`, `permission`, `world`, `value`) VALUES ('Hrac', 0, 'essentials.tpaccept', '', '');


tak mi to hlasi tuto chybu :

Kód: Vybrat vše

Chyba
SQL-dotaz:

INSERT INTO  `permissions_entity` (  `name` ,  `type` ,  `prefix` ,  `suffix` ,  `default` )
VALUES (

'default', 0,  '',  '', 1
);

MySQL hlásí:

#1062 - Duplicate entry 'default' for key 'name'

Re: PEX via MySQL - Migrace (2.díl)

Napsal: 09 črc 2012, 20:59
od Qentus
Možná jsi na "Proveď" klikl 2x.

Vyprázdni všechny 3 tabulky od PEX a vlož to znova.
Mě ten tvůj sql script jel vpoho.

Re: PEX via MySQL - Migrace (2.díl)

Napsal: 09 črc 2012, 21:09
od Welton123
Super, asi sjem klikl 2x no ale už to jde



//EDIT: ted ale nejsem admin ani nemam prefix a jeste mam za jmenem Welton123null ://

Re: PEX via MySQL - Migrace (2.díl)

Napsal: 09 črc 2012, 21:15
od Qentus
V permissions_entity smaž u řádku hráč kolonku Sufix.
A do toho stejného tablu vlož nový řádek - name Admin, type 0.

Je to nedokonalost převodu na straně pluginu a nebo trochu jiné chování když je to přes Db

Re: PEX via MySQL - Migrace (2.díl)

Napsal: 09 črc 2012, 21:17
od Welton123
Tak to už je, ale ted zase nefunguje pridavani VIP pres sms(automaticky)

Re: PEX via MySQL - Migrace (2.díl)

Napsal: 09 črc 2012, 21:21
od Qentus
To bohužel nijak neovlivním.
Když dodáš nějakou dokumentaci k pluginu/script, který to zajišťuje, tak se na to mohu mrknout ale nic nezaručuji.
Pokud je script udělán jen pro perms přes soubor, tak je to celkem nešikovné.

Doporučuji zatím nahrát zálohu hned po tom co si někam uložíš nastavení pro DB.
Když pak budeš pokračovat s DB tak zas jen prohodíš configy.

EDIT: Tak už vím, kde je možná chyba. Zkontroluj jestli je v permissions_entity záznam kde name je název VIP skupiny... pokud ne tak přidej záznam stejně jako záznam pro Admin skupinu

Re: PEX via MySQL - Migrace (2.díl)

Napsal: 09 črc 2012, 21:29
od Welton123
no, to null už sjem vyřešil ale ted nema default skupina zadny prefix(barevne jmeno, ne prefix), to automaticke VIP, do hry to napise, ze hrac blablabla si koupil VIP, v DB je tabulka s tim, ze ma VIP na ten a ten cas ale ve hre ne.