Проблема с запросами. Столбцы на русском языке(MSSQL)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
kidkb
Сообщения: 28
Зарегистрирован: 2019.01.29, 14:21

Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение kidkb »

Ребят, подскажите, как победить данную проблемы. Со столбцами на латинице проблем нет. Но если появляется хоть одна буква на русском, вываливается эксепшен, не видит впринципе столбец.

$command = Yii::$app->db->createCommand('SELECT * FROM {{Watch}}' WHERE "Статус" =1);
$dataProvider = new SqlDataProvider([

как победить данную проблему? поменять название столбцов или писать отдельную процедуру на каждый запрос не вариант. Может есть хитрые решения или кто сталкивался
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение chungachguk »

Попробуй использовать [Статус] заместо "Статус"
kidkb
Сообщения: 28
Зарегистрирован: 2019.01.29, 14:21

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение kidkb »

пробовал, не помогает. вот что в логах info yii\db\Command::query SELECT COUNT(*) FROM (SELECT * FROM [WatchingAllIZM] WHERE [�����]=1) [sub]
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение Alexum »

Возможно проблемы с вашей версией драйвера sqlsrv.
kidkb
Сообщения: 28
Зарегистрирован: 2019.01.29, 14:21

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение kidkb »

В том то и дело, что вроде драйвера последние.
Конфа такая: php 7.2 с подключенными драйверами
extension=php_sqlsrv_72_ts.dll
extension=php_sqlsrv_72_nts.dll
extension=php_pdo_sqlsrv_72_ts.dll
extension=php_pdo_sqlsrv_72_nts.dll , MSSQL 2014
kidkb
Сообщения: 28
Зарегистрирован: 2019.01.29, 14:21

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение kidkb »

версия 5.5 Windows-7.2.zip x64
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение Alexum »

Последняя стабильная версия 5.3. Попробуйте её.
kidkb
Сообщения: 28
Зарегистрирован: 2019.01.29, 14:21

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение kidkb »

К сожалению не помогло. Ставил 5.2 и 5.3 продакшен драйвера.
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение Alexum »

Только что проверил работу драйвера 5.3. с MSSQL 2014 Express, русские названия столбцов переваривает без проблем (правда с php 7.1). Есть возможность выложить в нормальном виде исключение?
kidkb
Сообщения: 28
Зарегистрирован: 2019.01.29, 14:21

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение kidkb »

Да я вот думал связку пересобрать, php 7.1 поставить. да толком исключение не дает в нормальном виде
Database Exception – yii\db\Exception

Error Info:


Caused by: PDOException

in C:\Server\domains\...\vendor\yiisoft\yii2\db\Command.php at line 259

1. in C:\Server\domains\...\vendor\yiisoft\yii2\db\Command.php at line 264
255256257258259260261262263264265266267268269270271272273

$pdo = $this->db->getMasterPdo();
}

try {
$this->pdoStatement = $pdo->prepare($sql);
$this->bindPendingParams();
} catch (\Exception $e) {
$message = $e->getMessage() . "\nFailed to prepare SQL: $sql";
$errorInfo = $e instanceof \PDOException ? $e->errorInfo : null;
throw new Exception($message, $errorInfo, (int) $e->getCode(), $e);
}
}

а вот что в логах
15:51:33.806 info yii\db\Command::query SELECT COUNT(*) FROM (SELECT * FROM [WatchingAllIZM] where � ���Ʒ=145) [sub]

C:\Server\domains\....\views\MainIzm\index.php:24
C:\Server\domains\....\controllers\MainizmController.php:47

15:51:33.806 info yii\db\Connection::open Opening DB connection: sqlsrv:server=KIDKB\SQLEXPRESS;database=SKMTRDB

C:\Server\domains\..\views\MainIzm\index.php:24
C:\Server\domains\....\controllers\MainizmController.php:47

15:51:33.827 error yii\db\Exception PDOException: SQLSTATE[IMSSP]: An error occurred translating the query string to UTF-16: ������ ������� �� ����� ������������ � ������� ������������� ������� �������.
. in C:\Server\domains\....\vendor\yiisoft\yii2\db\Command.php:259
Stack trace:
kidkb
Сообщения: 28
Зарегистрирован: 2019.01.29, 14:21

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение kidkb »

Поясню немного: просто таблицу целиком вывести $command = Yii::$app->db->createCommand('SELECT * FROM {{Watch}}' ; и запихать в дата провайдер, все работает, столбцы какие хочу вывожу( с русскими наименованиями). Но стоит написать простейший запрос $command = Yii::$app->db->createCommand('SELECT * FROM {{Watch}} where "№ заявки"=145' ; и указать столбец или параметр на русском, все падает.
kidkb
Сообщения: 28
Зарегистрирован: 2019.01.29, 14:21

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение kidkb »

попробовал php7.1, драйвера 5.3 и все равно такая же проблема
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение Alexum »

Есть подозрение, что вы вставляете в запросы русские символы в мультибайтной кодировке и Pdo ловит ошибку при попытке конвертнуть строку запроса из UTF-8 в UTF-16.
kidkb
Сообщения: 28
Зарегистрирован: 2019.01.29, 14:21

Re: Проблема с запросами. Столбцы на русском языке(MSSQL)

Сообщение kidkb »

ребят, я олень)) забыл преобразовать файл php в кодировку utf-8 без BOM. Тупиха напала полная. Прошу прощения за отнятое время и всем спасибо за помощь, особенно Alexum!
Ответить