Ich lese diesen Artikel und es scheint keine Möglichkeit zu geben, so etwas zu tun:
SELECT COUNT(*)
WHERE SHOW VARIABLES
WHERE Variable_name = 'innodb_ft_cache_size'
Ich kann das Folgende tun, aber dies funktioniert nicht in MySQL 5.7 (Keine Variablen in Tabelle)
SELECT COUNT(*)
FROM information_schema.GLOBAL_VARIABLES
WHERE Variable_name = 'innodb_ft_cache_size' (always returns 0)
Der Grund, warum ich dies tun muss, besteht darin, in einer gespeicherten Prozedur zu erkennen, ob sie die Möglichkeit haben, Volltext zu erstellen. Es muss in MySQL
und Varianten von MySQL funktionieren, damit ich nicht einfach analysieren kann@@verison.
Gibt es einen anderen Weg, dies zu tun?
Hier ist eine gespeicherte Prozedur, works on 5.5,5.6, and 5.7
mit der das Vorhandensein von Volltextfähigkeiten erkannt werden kann. Dies sollte auch bei MySQL-Varianten funktionieren
begin
set @supports_ft = 0;
set @information_schema_exists := (SELECT COUNT(SCHEMA_NAME) FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = 'information_schema');
if @information_schema_exists > 0 then
set @information_schema_exists_global_vars_exists := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'information_schema' AND TABLE_NAME = 'GLOBAL_VARIABLES');
if @information_schema_exists_global_vars_exists > 0 then
set @supports_ft := (SELECT COUNT(*) FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'innodb_ft_cache_size');
end if;
end if;
if @supports_ft = 0 then
set @performance_schema_exists := (SELECT COUNT(SCHEMA_NAME) FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = 'performance_schema');
if @performance_schema_exists > 0 then
set @performance_schema_exists_global_vars_exists := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'performance_schema' AND TABLE_NAME = 'GLOBAL_VARIABLES');
if @performance_schema_exists_global_vars_exists > 0 then
set @supports_ft := (SELECT COUNT(*) FROM performance_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'innodb_ft_cache_size');
end if;
end if;
end if;
Antworten:
Du kannst rennen
Wenn es 2 ist (oder um 2 erhöht wird), haben Sie die Variable. Wenn es 1 ist (oder um 1 erhöht wird), tun Sie dies nicht.
Das sollte bei jeder Version funktionieren.
quelle
Ihre Abfrage gegen
information_schema.GLOBAL_VARIABLES
funktioniert nicht, da sie unter MySQL 5.7 standardmäßig deaktiviert ist. Sie müssen zuerst die 5.6-Kompatibilitätsfunktion aktivieren (kein Neustart erforderlich).quelle