wp-cli / db-command

Performs basic database operations using credentials stored in wp-config.php.
MIT License
71 stars 57 forks source link

wp-cli returns FAIL notice when using mariadb symlinked mysql* commands; request for native mdb support #271

Open pgnd opened 2 months ago

pgnd commented 2 months ago

i've installed

wp-cli  cli info
    OS:     Linux 6.10.6-200.fc40.x86_64 wp-cli/wp-cli#1 SMP PREEMPT_DYNAMIC Mon Aug 19 14:09:30 UTC 2024 x86_64
    Shell:  /bin/bash
    PHP binary:     /usr/bin/php
    PHP version:    8.3.11
    php.ini used:   /usr/local/etc/php8/php.ini
    MySQL binary:
    MySQL version:
    SQL modes:
    WP-CLI root dir:        phar://wp-cli.phar/vendor/wp-cli/wp-cli
    WP-CLI vendor dir:      phar://wp-cli.phar/vendor
    WP_CLI phar path:       /srv/my.app
    WP-CLI packages dir:    /var/lib/wwwrun/.wp-cli/packages/
    WP-CLI cache dir:       /var/lib/wwwrun/.wp-cli/cache
    WP-CLI global config:   /var/lib/wwwrun/.wp-cli/config.yml
    WP-CLI project config:  /srv/my.app/wp-cli.yml
    WP-CLI version: 2.11.0

i use mariadb

rpm -qa | grep -Ei "^mysql|^mariadb"
    mariadb-sysusers-git_1.0-0.20240812_133520.fc40.noarch
    mariadb-lts-git_11.4-0.20240812_133724.fc40.x86_64
    mariadb-connector-j-git_3.3.1-0.20240812_133547.fc40.noarch

mariadb -V
    mariadb from 11.4.4-MariaDB, client 15.2 for Linux (x86_64) using readline 5.1

where

echo $PATH
    /usr/local/mariadb-lts/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

which mariadb
    /usr/local/mariadb-lts/bin/mariadb

and the mysql-equivalent commands are provided as symlinks

cd /usr/local/mariadb-lts/bin
ls -l mysql* | awk '{print $9, "->", $NF}'
    mysql -> mariadb*
    mysqlaccess -> mariadb-access*
    mysqladmin -> mariadb-admin*
    mysqlbinlog -> mariadb-binlog*
    mysqlcheck -> mariadb-check*
    mysql_client_test -> mariadb-client-test*
    mysql_config* -> mysql_config*
    mysql_convert_table_format -> mariadb-convert-table-format*
    mysqld_multi -> mariadbd-multi*
    mysqld_safe -> mariadbd-safe*
    mysqld_safe_helper -> mariadbd-safe-helper*
    mysqldump -> mariadb-dump*
    mysqldumpslow -> mariadb-dumpslow*
    mysql_find_rows -> mariadb-find-rows*
    mysql_fix_extensions -> mariadb-fix-extensions*
    mysqlhotcopy -> mariadb-hotcopy*
    mysqlimport -> mariadb-import*
    mysql_install_db -> mariadb-install-db*
    mysql_plugin -> mariadb-plugin*
    mysql_secure_installation -> mariadb-secure-installation*
    mysql_setpermission -> mariadb-setpermission*
    mysqlshow -> mariadb-show*
    mysqlslap -> mariadb-slap*
    mysqltest -> mariadb-test*
    mysql_tzinfo_to_sql -> mariadb-tzinfo-to-sql*
    mysql_upgrade -> mariadb-upgrade*
    mysql_waitpid -> mariadb-waitpid*

on exec, wp-cli returns deprecation warnings

wp-cli db check
    mysqlcheck: Deprecated program name. It will be removed in a future release, use '/usr/local/mariadb-lts/bin/mariadb-check' instead
    ...

currently, the wp-cli return with the deprecation notice causes some grief mainly with scripts. but it will likely, eventually break.

as mysql/mariadb continue to diverge, MDB's deprecating the mysql* cmds. not entirely sure where the end of the thread is, but these are a start

"Remove MySQL names" https://jira.mariadb.org/browse/MDEV-30201

"deprecate mysql* names" https://jira.mariadb.org/browse/MDEV-29582

it'll be useful to get native mariadb command support in wp-cli.

pgnd commented 2 months ago

not just warnings, but failures

where

ls -al `which mysql`
    lrwxrwxrwx 1 root root 7 Aug 11 20:00 /usr/local/mariadb-lts/bin/mysql -> mariadb*

and

DB_NAME=$(wp-cli config get DB_NAME)
SITE_URL=$(wp-cli option get siteurl)
SITE_NAME=$(wp-cli option get blogname)
THEME_NAME=$(wp-cli theme list --status=active --field=name)

this works

SQL_QUERY="SELECT * FROM wp_options WHERE option_value LIKE '%$SITE_URL%' OR option_value LIKE '%$SITE_NAME%' OR option_value LIKE '%$THEME_NAME%';"

mariadb ${DB_NAME} -e "$SQL_QUERY"

as does

mysql ${DB_NAME} -e "$SQL_QUERY"

but,

wp-cli db query "${SQL_QUERY}"
    Error: Failed to get current SQL modes. Reason: /usr/bin/env: ‘mysql’: No such file or directory
swissspidy commented 2 months ago

Isn't this a duplicate of #270, which you opened 2 weeks ago?

pgnd commented 2 months ago

@swissspidy

ugh. :facepalm: completely forgot that! sorry for the noise ...

i'll close THAT and leave THIS, since I'm dealing with the FAILs now.