Задать вопрос
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки

Почему yii2-sphinx не находит столбцы в индексе sphinx?

Есть код:

use yii\sphinx\Query;

$query = new Query;
		$rows = $query->select('text')
		    ->from('posts')
		    ->all();

var_dump($rows); die();


Выдает ошибку:
Database Exception – yii\db\Exception
SQLSTATE[42000]: Syntax error or access violation: 1064 index posts: parse error: unknown identifier 'text' (not an attribute, not a function)
The SQL being executed was: SELECT `text` FROM `posts`

Error Info: Array
(
[0] => 42000
[1] => 1064
[2] => index posts: parse error: unknown identifier 'text' (not an attribute, not a function)
)



Но в таблице mysql есть столбец text.
Вот конфиг sphinx:
source selposts
{
	type			= mysql
	sql_host		= localhost
	sql_user		= uzerrr
	sql_pass		=  pazzz
	sql_db			= database
	sql_port		= 3306	# optional, default is 3306
	#sql_query		= SELECT id, header, text FROM sel_posts WHERE header != 'NULL'
	sql_query               = SELECT * FROM sel_posts    	
}


index posts
{
	source			= selposts
	path			=  /var/lib/sphinx/selectner/posts
	charset_type		= utf-8
}


И indexer posts данные собирает успешно.

В чем проблема? Почему text неизвестный столбец для yii?
  • Вопрос задан
  • 757 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
sanchezzzhak
@sanchezzzhak
Ля ля ля...
1 по рукам, то что хотите отдать в выдачи нужно указать в source
sql_field_string = text
sql_attr_uint = user_id
sql_attr_json = personal_json
sql_attr_timestamp = created_at

2 Используйте наследование
source config_mysite
{
	type			= mysql
	sql_host		= localhost
	sql_user		= root
	sql_pass		= mysql
	sql_db			= new_db
	sql_port		= 3306

	sql_query_pre = SET NAMES utf8
    sql_query_pre = SET CHARACTER SET utf8
}

source mysite_selposts :config_mysite
{
	sql_query = \
SELECT `id`, `text` FROM sel_posts  

    sql_field_string = text
}

3 зарегистрированные слова которые вы используете нужно оборачивать в кавычки `text`
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы