Database collations (#489)

* SyncDatabases

* Collation on Create inc WordPress

* Refactored Enum

* Resolve sync issue

* Fix for PostgreSQL

* pint

* reversed enum

* style adjustments

* add unit tests

* style

* fix tests

* more tests

---------

Co-authored-by: Saeed Vaziry <61919774+saeedvaziry@users.noreply.github.com>
Co-authored-by: Saeed Vaziry <mr.saeedvaziry@gmail.com>
This commit is contained in:
Richard Anderson
2025-03-02 16:18:27 +00:00
committed by GitHub
parent 269ee8d962
commit 5a12ed76bb
35 changed files with 585 additions and 19 deletions

View File

@ -1,8 +1,8 @@
if ! sudo mysql -e "CREATE USER IF NOT EXISTS '{{ $username }}'@'{{ $host }}' IDENTIFIED BY '{{ $password }}'"; then
if ! sudo mariadb -e "CREATE USER IF NOT EXISTS '{{ $username }}'@'{{ $host }}' IDENTIFIED BY '{{ $password }}'"; then
echo 'VITO_SSH_ERROR' && exit 1
fi
if ! sudo mysql -e "FLUSH PRIVILEGES"; then
if ! sudo mariadb -e "FLUSH PRIVILEGES"; then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -1,4 +1,4 @@
if ! sudo mysql -e "CREATE DATABASE IF NOT EXISTS {{ $name }} CHARACTER SET utf8 COLLATE utf8_general_ci"; then
if ! sudo mariadb -e "CREATE DATABASE IF NOT EXISTS {{ $name }} CHARACTER SET '{{ $charset }}' COLLATE '{{ $collation }}'"; then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -1,8 +1,8 @@
if ! sudo mysql -e "DROP USER IF EXISTS '{{ $username }}'@'{{ $host }}'"; then
if ! sudo mariadb -e "DROP USER IF EXISTS '{{ $username }}'@'{{ $host }}'"; then
echo 'VITO_SSH_ERROR' && exit 1
fi
if ! sudo mysql -e "FLUSH PRIVILEGES"; then
if ! sudo mariadb -e "FLUSH PRIVILEGES"; then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -1,4 +1,4 @@
if ! sudo mysql -e "DROP DATABASE IF EXISTS {{ $name }}"; then
if ! sudo mariadb -e "DROP DATABASE IF EXISTS {{ $name }}"; then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -0,0 +1,4 @@
if ! sudo mariadb -e "SHOW COLLATION;";
then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -0,0 +1,10 @@
if ! sudo mariadb -e "SELECT
SCHEMA_NAME AS database_name,
DEFAULT_CHARACTER_SET_NAME AS charset,
DEFAULT_COLLATION_NAME AS collation
FROM information_schema.SCHEMATA;";
then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -1,8 +1,8 @@
if ! sudo mysql -e "GRANT ALL PRIVILEGES ON {{ $database }}.* TO '{{ $username }}'@'{{ $host }}'"; then
if ! sudo mariadb -e "GRANT ALL PRIVILEGES ON {{ $database }}.* TO '{{ $username }}'@'{{ $host }}'"; then
echo 'VITO_SSH_ERROR' && exit 1
fi
if ! sudo mysql -e "FLUSH PRIVILEGES"; then
if ! sudo mariadb -e "FLUSH PRIVILEGES"; then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -2,7 +2,7 @@
echo 'VITO_SSH_ERROR' && exit 1
fi
if ! sudo DEBIAN_FRONTEND=noninteractive mysql -u root {{ $database }} < {{ $file }}.sql; then
if ! sudo DEBIAN_FRONTEND=noninteractive mariadb -u root {{ $database }} < {{ $file }}.sql; then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -1,4 +1,4 @@
sudo service mysql stop
sudo service mariadb stop
sudo DEBIAN_FRONTEND=noninteractive apt-get remove mariadb-server mariadb-backup -y

View File

@ -1,4 +1,4 @@
if ! sudo mysql -e "REVOKE ALL PRIVILEGES, GRANT OPTION FROM '{{ $username }}'@'{{ $host }}'"; then
if ! sudo mariadb -e "REVOKE ALL PRIVILEGES, GRANT OPTION FROM '{{ $username }}'@'{{ $host }}'"; then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -1,4 +1,4 @@
if ! sudo mysql -e "CREATE DATABASE IF NOT EXISTS {{ $name }} CHARACTER SET utf8 COLLATE utf8_general_ci"; then
if ! sudo mysql -e "CREATE DATABASE IF NOT EXISTS {{ $name }} CHARACTER SET '{{ $charset }}' COLLATE '{{ $collation }}'"; then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -0,0 +1,3 @@
if ! sudo mysql -e "SHOW COLLATION;"; then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -0,0 +1,8 @@
if ! sudo mysql -e "SELECT
SCHEMA_NAME AS database_name,
DEFAULT_CHARACTER_SET_NAME AS charset,
DEFAULT_COLLATION_NAME AS collation
FROM information_schema.SCHEMATA;";
then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -1,4 +1,4 @@
if ! sudo -u postgres psql -c "CREATE DATABASE \"{{ $name }}\""; then
if ! sudo -u postgres psql -c "CREATE DATABASE \"{{ $name }}\" WITH ENCODING '{{ $charset }}'"; then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -0,0 +1,13 @@
if ! sudo -u postgres psql -c "SELECT collname as collation,
pg_encoding_to_char(collencoding) as charset,
'' as id,
'' as \"default\",
'Yes' as compiled,
'' as sortlen,
'' as pad_attribute
FROM pg_collation
WHERE not pg_encoding_to_char(collencoding) = ''
ORDER BY charset;";
then
echo 'VITO_SSH_ERROR' && exit 1
fi

View File

@ -0,0 +1,8 @@
if ! sudo -u postgres psql -c "SELECT
datname AS database_name,
pg_encoding_to_char(encoding) AS charset,
datcollate AS collation
FROM pg_database;";
then
echo 'VITO_SSH_ERROR' && exit 1
fi