Синтаксис SQL; Что это? - PullRequest
25 голосов
/ 07 июня 2011

Мой экспортированный файл sql содержит нижние строки;

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

Что означают эти строки, в отличие от CREATE TABLE, INSERT INTO?

Ответы [ 4 ]

33 голосов
/ 07 июня 2011

Это переменные назначения .Назначения заключены в исполняемые комментарии таким образом, что они выполняются, когда используется MySQL, и остаются одни, если используется какая-либо другая СУБД.Кроме того, 40101 указывает, что комментарии не должны сохраняться в базе данных, то есть, если строки выполняются, они выполняются только при выполнении файла sql.

2 голосов
/ 07 июня 2011

Это переменные назначения, заключенные в условные комментарии.Код выполняется в зависимости от версии MySQL, см. комментарии

0 голосов
/ 22 ноября 2018

Эти специальные комментарии всегда смущают меня, после проверки документа https://dev.mysql.com/doc/refman/8.0/en/comments.html

если вы добавите номер версии после! символ, синтаксис в комментарии выполняется только если версия MySQL больше или равна указанному номеру версии. Ключевое слово KEY_BLOCK_SIZE в следующем комментарии выполняется только серверами с MySQL 5.1.10 или выше:

CREATE TABLE t1 (INT, KEY (a)) / *! 50110 KEY_BLOCK_SIZE = 1024 * /;

Это не сложно понять. В терминах 50110 означает 5 (основной) 01 (младший) 10 (ревизия) = запустить, что в версии MySQL> = 5.1.10 или выше

0 голосов
/ 07 июня 2011

Эти строки являются комментариями. Комментарий SQL может начинаться с -- до конца строки или может быть окружен /* ... */

Я думаю, что строки связаны с кодировкой вашего экспортированного файла sql.

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