无法将 mySQL 连接到 Sphinx 搜索

Unable to connect mySQL to Sphinx Search

我正在使用最新版本的 mySQL 服务器,我希望将其连接到 Sphinx 搜索。但是,当我尝试使用 "SphinxQL" 通过 CMD 连接到服务器时,我遇到:

ERROR 200 (HY000): Unknown MySQL error

这是通过尝试:

searchd -P9306

并接收:

[Wed Aug 29 10:41:28.893 2018] [22560] listening on 127.0.0.1:9312
[Wed Aug 29 10:41:28.893 2018] [22560] listening on all interfaces, port=9306
[Wed Aug 29 10:41:28.959 2018] [22560] WARNING: No extra index definitions found in data folder
[Wed Aug 29 10:41:28.965 2018] [22560] accepting connections
[Wed Aug 29 10:41:28.966 2018] [21976] prereading 2 indexes
[Wed Aug 29 10:41:28.966 2018] [21976] prereaded 2 indexes in 0.000 sec

但是,我可以用同样的方式连接到端口 3306 并成功进入基础 mySQL 服务器。我听说 Sphinx 和 SQL 保存密码的方式有些不同,所以我使用了 mysql_native_password 和较新版本的用户都无济于事。

索引器运行良好,但当我专门轮换索引时遇到有关无法打开 pid_file 的错误。这可能不相关。

下面是我的代码片段:

#
# Minimal Sphinx configuration sample (clean, simple, functional)
#

source src1
{
    type            = mysql

    sql_host        = localhost
    sql_user        = test
    sql_pass        = test123
    sql_db          = test
    sql_port        = 3306  # optional, default is 3306

    sql_query       = SELECT id, name, storage, colour, network, quality, price, UNIX_TIMESTAMP() AS last_modified FROM phones
    # UNIX_TIMESTAMP() AS

    sql_attr_timestamp  = last_modified
}


index test1
{
    source          = src1
    path            = C:/Program Files/sphinx-3.0.3/data/test1
}


index testrt
{
    type            = rt
    rt_mem_limit    = 128M

    path            = C:/Program Files/sphinx-3.0.3/data/testrt

    rt_field        = id
    rt_field        = name
    rt_field        = storage
    rt_field        = colour
    rt_field        = network
    rt_field        = condition
    rt_field        = price
    rt_field        = last_modified
    rt_attr_uint    = gid
}


indexer
{
    mem_limit       = 128M
}


searchd
{
    mysql_version_string = 5.0.37
    listen          = localhost:9312
    listen          = 9306:mysql41
    log         = C:/Program Files/sphinx-3.0.3/log/searchd.log
    query_log       = C:/Program Files/sphinx-3.0.3/log/query.log
    read_timeout        = 5
    max_children        = 30
    pid_file        = C:/Program Files/sphinx-3.0.3/log/searchd.pid
    seamless_rotate     = 1
    preopen_indexes     = 1
    unlink_old      = 1
    workers         = threads # for RT to work
    binlog_path     = C:/Program Files/sphinx-3.0.3/data
}

您似乎在使用 mysql 8 客户端。 Sphinx 还不兼容。您可能想试试 Manticore Search(Sphinx 的一个分支)。

[root@sehs01 mysql-8.0.11-el7-x86_64]# ./bin/mysql --version
./bin/mysql  Ver 8.0.11 for el7 on x86_64 (MySQL Community Server - GPL)

[root@sehs01 mysql-8.0.11-el7-x86_64]# ./bin/mysql -hse01 -P6312
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 2.7.2 58d96fd@180822 dev

使用较旧版本的 mySQL 客户端仅用于连接工作完美,即使 Sphinx 从较新的服务器中拉出也是如此。感谢大家的帮助。