У меня проблемы с вставкой значений в таблицы с целочисленными столбцами типов данных с использованием Laravel 5.1 и Sybase.
Ошибка 257 отображается в виде исключения. В документах Sybases кажется, что это проблема конверсии. Я вижу, что вставка sql встроена в фреймворк
insert into [table_name] ([col1], [col2]) values ('AAA', '999'))
Итак, я вижу, что Laravel передает все значения в одинарные кавычки, и мне кажется, что Sybase не принимает такую конструкцию.
Я использую Linux Ubuntu с freetds, установленной с версией протокола 5.0.
Кто-то уже решил эту проблему? Мне не хватает какой-либо конфигурации или мне нужно написать расширение драйвера для работы Sybase с Laravel 5.1?
Предполагая, что вы используете Sybase ASE, проблема связана с базой данных, и она унаследована от PHP PDO, в результате чего по умолчанию она связывает все параметры в виде строки, если вы не укажете тип данных для привязки с помощью функции bindValue ().
<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindValue(':calories', $calories, PDO::PARAM_INT);
$sth->bindValue(':colour', $colour, PDO::PARAM_STR);
$sth->execute();
?>
Тип данных должен соответствовать определению вашей таблицы.
В Laravel, если вы используете eloquent, вам может потребоваться переписать Connection.php, чтобы связать параметр соответствующим образом, поскольку текущий код в laravel не использует bindValue для привязки параметров, и поэтому PDO будет использовать тип данных по умолчанию, который является строкой ,
Других решений пока нет …