Repository navigation
6.3.2
-
manage.py migrate_uuids --executerefuses to start when the run needs disk space and the server is not provably this host (a socket or loopback connection to a server that reports this host's name): that space cannot be measured from here, and it only warned before. A server in a container reached through loopback, another address of this machine or a hostname alias count as another host. Check the server's free space by hand and run again with--skip-space-check. Dry runs still only warn. -
manage.py migrate_uuidsexits with status 1 when a statement fails (it printed "CRITICAL ERROR" and exited 0), when--disable-copy-bulkcannot restoreinnodb_alter_copy_bulk, and on a database that is not MySQL/MariaDB. A failed run prints the statement that failed and the state of every UUID column (not converted, half converted, converted); running the command again resumes it.SET FOREIGN_KEY_CHECKS=1now runs also after a failed statement, so the session is not left with foreign key checks off. -
manage.py migrate_uuidsreads the values, not only the column type. A column already at the target length that still holds values in the old format (a run cut after itsALTER, which the next run reported as compliant) is planned again,UPDATEonly. Values that are neither 32 hex characters nor a dashed UUID are listed, and--executerefuses to start while a column it would convert holds any: the conversion would leave them unreadable or truncate them. TheUPDATEs match the format (REGEXP) instead of the length, so a 32-character value that is not hex is no longer turned into 36 characters of garbage. A nativeuuidcolumn (MariaDB >= 10.7) counts as compliant for--target 36instead of being planned as "None -> 36", and a table mapped by two models is planned once. The dry run says which columns block--execute. Reading the values costs oneCOUNTper column, in dry runs too: about 2.6 s per 3 million rows with an index on the column, a full table scan without one. -
manage.py migrate_uuids --executeaddsSTRICT_ALL_TABLESto the sessionsql_modefor the run and restores it afterwards, so a value that does not fit stops the run instead of being truncated on a server configured without strict mode. -
manage.py migrate_uuidsestimates the disk per directory of the server and no longer blesses runs that fail:tmpdirneeds 2.5 times the largest rebuilt table withinnodb_alter_copy_bulkON(1 times before; merge files were measured at up to 2.46 times, so the margin is thin), andinnodb_tmpdiris no longer read, since the merge files go totmpdiranyway; every directory of a colon-separatedtmpdiris checked; with a binary log in ROW format, the UPDATE phase needs 2.5 times the updated tables in the binary log directory and 2.5 times the largest one intmpdir(transaction cache), which was not counted (the binary log of aROW_FORMAT=COMPRESSEDtable was measured at 3.34 times: there the estimate is short, and a full disk stops the run with status 1); directories on the same filesystem add their requirements up. Free space is measured only when the connection is a socket or loopback one and the server's@@hostnameis this host's name: a path that merely exists on the client is no proof, and was measured on the client's filesystem. It reminds that the sizes are InnoDB estimates, far too low right after an import untilANALYZE TABLEruns. -
New system check
codenerix.E008:OTP_VALID_WINDOWthat is not a non-negative integer. A string (for instance from an environment variable) raisedTypeErrorat login and a negative value refused every code;OTPAuthnow falls back to0, the current step only. It is an Error, socheck,migrateandrunserverstop until the setting is fixed, andTrue, accepted as1until now, is rejected.