Laravel - SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064 при переносе PROCEDURE OR FUNCTION - PullRequest
0 голосов
/ 31 мая 2018

У меня 2 машины.Один с php 5.6, а другой с php 7.

Один с php 5.6 имеет:

[root@bd-mg ~]# mysql --version mysql Ver 15.1 Distrib 10.1.23-MariaDB, for Linux (x86_64) using readline 5.1

Другой с php 7 имеет:

[root@XXX]# mysql --version mysql Ver 15.1 Distrib 5.5.59-MariaDB, for Linux (x86_64) using readline 5.1

Когда я запускаю миграции на машине с php 5.6, у меня нет проблем.Все таблицы, представления, процедуры и функции созданы.Но на другом компьютере, когда я запускаю php artisan migrate, у меня появляются следующие ошибки:

[root@XXX]# php artisan migrate

In Connection.php line 647:

  SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '=`root`@`localhost` FUNCTION `genera_pr
  oyeccion_demanda`(_IN_FECHA_PROYECCION da' at line 1 (SQL: REPLACE DEFINER=`root`@`localhost` FUNCTION `genera_proyeccion_demanda`(_IN_FECHA_PROYECCION date) RETURNS double
  BEGIN
  END
  )


In PDOConnection.php line 62:

  SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '=`root`@`localhost` FUNCTION `genera_pr
  oyeccion_demanda`(_IN_FECHA_PROYECCION da' at line 1


In PDOConnection.php line 60:

  SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '=`root`@`localhost` FUNCTION `genera_proyeccion_demanda`(_IN_FECHA_PROYECCION da' at line 1

В моих функциях или процедурах, конечно, больше кода, но я пытался свести к минимуму код, чтобы отбрасывать этот синтаксиспроблема, но я не понимаю, в моей другой машине работает, но не здесь: enter image description here

Эта ошибка возникает даже с процедурами или функциями почти пустыми.Есть идеи?Пользователь базы данных - root, и я также запускаю php artisan от имени root.

1 Ответ

0 голосов
/ 31 мая 2018

Согласно моему комментарию, ошибки консоли из команды php artisan migrate информируют вас о том, что синтаксис SQL REPLACE не принят.

Похоже, это связано с более новым PDO в php7.Версия, поставляемая с php5.6, по-видимому, приняла синтаксис, но версия в php7 - нет.

Синтаксис нарушителя в миграции 2018_05_24_202139_create_genera_proyeccion_demanda_function

Если вам нужно подтвердить, существует ли таблица, вы можете использовать метод Schema :: hasTable (), см. https://laravel.com/docs/5.6/migrations#tables

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...