Co se pokazí, když migrujete z MySQL do PostgreSQL > 자유게시판

본문 바로가기
사이트 내 전체검색

자유게시판

Co se pokazí, když migrujete z MySQL do PostgreSQL

페이지 정보

profile_image
작성자 Junko Papathana…
댓글 0건 조회 2회 작성일 26-10-03 03:22

본문

Asserty a izolace: kde se láme disciplína Základní tvrzení se píše přes Assert.That, například Assert.That(vysledek, Is.EqualTo(4)). Vyhněte se starším metodám jako Assert.AreEqual, jsou méně čitelné a v novějších verzích se mohou lišit. Pro výjimky použijte Assert.Throws nebo Assert.That(() => kód, pokračovat ve čtení Throws.TypeOf()). Častá chyba je testovat více věcí v jednom testu. Když jeden test ověřuje výpočet i formát výstupu, jeho selhání vám neřekne, co je špatně. If you have any queries pertaining to exactly where and how to use DokončEní InteriéRu, you can get in touch with us at our own internet site. Rozdělte tvrzení do více testů nebo použijte Assert.Multiple, pokud opravdu chcete vidět všechna selhání najednou.

Nejčastější chyby se opakují: chybějící kontrola podpisu, povolení algoritmu „none", příliš dlouhá platnost, token v adrese URL a záměna ověření s autorizací. Testujte proto i neplatné a pozměněné tokeny, ne jen ty správné. Ověření, že token je pravý, ještě neznamená, že jeho držitel smí danou operaci provést. Autorizaci vždy řešte zvlášť podle rolí a oprávnění.

První krok obrany není žádná knihovna, ale změna způsobu, jakým se dotazy skládají. Parametrizované dotazy, tedy prepared statements, pošlou databázi strukturu příkazu zvlášť a hodnoty zvlášť. Databáze pak apostrof ve vstupu pochopí jako součást textu, ne jako konec řetězce. V Javě to znamená použít PreparedStatement místo Statement, v PHP PDO nebo mysqli s vázanými parametry, v Pythonu parametrizaci ovladače. Ruční ošetřování vstupu pomocí zpětných lomítek je pouze záplata, která selže při jiném kódování znaků.

Migrace z MySQL do PostgreSQL není jen převod dat z jednoho serveru na druhý. Většina problémů nevznikne při samotném přenosu řádků, ale v odlišnostech syntaxe, typového systému a chování transakcí. Kdo to podcení, skončí s aplikací, která se sice spustí, ale vrací jiné byt v panelákuýsledky než dřív. Proto je nutné začít inventurou: zjistit, jaké datové typy, funkce a konstrukce se v dotazech skutečně používají.

Mezi nejčastější chyby patří zapomenutí mapování portů nebo špatné pořadí argumentů. Příkaz docker run očekává nejprve přepínače, teprve potom název obrazu a případně příkaz, který se má spustit. Další častá chyba je ukládání dat mimo svazek. Také se vyhněte tomu, abyste v Dockerfile používali příkaz COPY . . bez souboru .dockerignore. Zbytečně tak do obrazu zahrnete dočasné soubory nebo citlivá data.

Podmínky a cykly jsou dalším zdrojem zbytečné složitosti. Místo vnořených if používejte tzv. guard clauses: na začátku funkce odchytněte neplatné vstupy a rychle se vraťte. Kód se tím zploští a čte se shora dolů. Podobně u polí dávejte přednost map, filter a reduce před ručními cykly s push, pokud tím nevznikne hůř čitelný zápis. Pozor ale na přílišné řetězení — tři metody za sebou jsou v pořádku, deset už je horší než jednoduchý cyklus. Asynchronní kód pište pomocí async a await, vyhněte se peklu vnořených callbacků a nezapomínejte ošetřit chyby blokem try/catch.

Spuštění a síťování Z obrazu vytvoříte běžící kontejner příkazem docker run. Pokud ho chcete spustit na pozadí, přidejte -d. Pro přístup z prohlížeče je potřeba namapovat porty: -p 8080:80 znamená, že port 80 v kontejneru bude dostupný na portu 8080 vašeho počítače. Data, která mají přežít smazání kontejneru, ukládejte do svazku (volume) pomocí -v. Bez toho přijdete o vše, co aplikace zapíše. Kontejnery se mezi sebou dorozumívají přes vlastní síť, kterou vytvoříte příkazem docker network create. Do stejné sítě pak připojíte více kontejnerů a mohou se volat podle jmen.

Ověření nesmí skončit tím, že se aplikace připojí. Je potřeba porovnat počty řádků, kontrolní součty u číselných sloupců a vzorky dotazů, které vracejí stejná data. Chyby se často projeví až osvětlení v obýváku aplikaci: jiné řazení, odlišné formátování data, neočekávané NULL hodnoty. Nasadit se vyplatí na kopii, ne na produkci. Teprve když testy projdou, lze přepnout připojovací řetězec a starý server ponechat několik dní jako zálohu pro případ návratu.

Kde se nejčastěji láme kompatibilita Zpětné apostrofy v MySQL nahrazují dvojité uvozovky, funkce IFNULL se mění na COALESCE, NOW() zůstává, ale DATE_FORMAT má jiné vzory. Zrádné je porovnávání řetězců: MySQL ve výchozím nastavení nerozlišuje velikost písmen, PostgreSQL ano. To samé platí pro diakritiku. Pokud aplikace spoléhá na to, že WHERE nazev = 'Praha' najde i 'praha', výsledky se budou lišit. Řešením je buď sjednotit data, nebo použít citext případně index s funkcí lower(). Pozor také na GROUP BY: PostgreSQL vyžaduje, aby všechny sloupce v SELECTu byly agregované nebo uvedené ve skupině.

Praktický tip: používejte [Category] pro označení pomalých nebo integračních testů a spouštějte je zvlášť. Při ladění zapněte v konfiguraci NUnit --workers=1, abyste vyloučili souběh. Až budete mít testy hotové, ověřte, že opravdu selžou, když kód rozbijete. Test, který neumí selhat, nic netestuje. NUnit je nástroj, ne cíl. Pište testy, které popisují chování, ne implementaci. Když se změní vnitřní logika, testy by měly zůstat zelené, pokud se nezměnilo očekávané chování.

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
88,620
어제
49,776
최대
299,525
전체
5,349,622
Copyright © 소유하신 도메인. All rights reserved.