Проблема с запросами. Столбцы на русском языке(MSSQL)
Проблема с запросами. Столбцы на русском языке(MSSQL)
Ребят, подскажите, как победить данную проблемы. Со столбцами на латинице проблем нет. Но если появляется хоть одна буква на русском, вываливается эксепшен, не видит впринципе столбец.
$command = Yii::$app->db->createCommand('SELECT * FROM {{Watch}}' WHERE "Статус" =1);
$dataProvider = new SqlDataProvider([
как победить данную проблему? поменять название столбцов или писать отдельную процедуру на каждый запрос не вариант. Может есть хитрые решения или кто сталкивался
$command = Yii::$app->db->createCommand('SELECT * FROM {{Watch}}' WHERE "Статус" =1);
$dataProvider = new SqlDataProvider([
как победить данную проблему? поменять название столбцов или писать отдельную процедуру на каждый запрос не вариант. Может есть хитрые решения или кто сталкивался
- chungachguk
- Сообщения: 435
- Зарегистрирован: 2012.07.17, 11:52
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
Попробуй использовать [Статус] заместо "Статус"
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
пробовал, не помогает. вот что в логах info yii\db\Command::query SELECT COUNT(*) FROM (SELECT * FROM [WatchingAllIZM] WHERE [�����]=1) [sub]
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
Возможно проблемы с вашей версией драйвера sqlsrv.
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
В том то и дело, что вроде драйвера последние.
Конфа такая: 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
Конфа такая: 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
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
версия 5.5 Windows-7.2.zip x64
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
Последняя стабильная версия 5.3. Попробуйте её.
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
К сожалению не помогло. Ставил 5.2 и 5.3 продакшен драйвера.
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
Только что проверил работу драйвера 5.3. с MSSQL 2014 Express, русские названия столбцов переваривает без проблем (правда с php 7.1). Есть возможность выложить в нормальном виде исключение?
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
Да я вот думал связку пересобрать, 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:
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:
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
Поясню немного: просто таблицу целиком вывести $command = Yii::$app->db->createCommand('SELECT * FROM {{Watch}}' ; и запихать в дата провайдер, все работает, столбцы какие хочу вывожу( с русскими наименованиями). Но стоит написать простейший запрос $command = Yii::$app->db->createCommand('SELECT * FROM {{Watch}} where "№ заявки"=145' ; и указать столбец или параметр на русском, все падает.
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
попробовал php7.1, драйвера 5.3 и все равно такая же проблема
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
Есть подозрение, что вы вставляете в запросы русские символы в мультибайтной кодировке и Pdo ловит ошибку при попытке конвертнуть строку запроса из UTF-8 в UTF-16.
Re: Проблема с запросами. Столбцы на русском языке(MSSQL)
ребят, я олень)) забыл преобразовать файл php в кодировку utf-8 без BOM. Тупиха напала полная. Прошу прощения за отнятое время и всем спасибо за помощь, особенно Alexum!