Тот же запрос, но ЗАКАЗЫВАЙТЕ Производить разные результаты - PullRequest
0 голосов
/ 04 марта 2019

Я использую два сервера MySQL (производственный и тестовый).Я выполняю один и тот же запрос на обоих через MySQL Workbench, но результаты не в том же порядке.В чем причина?

Запрос:

select table_name, table_collation 
from information_schema.tables 
where table_schema = 'orchestration' 
order by table_name asc`

Here's the actual output

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

тестовая версия 8.0.11;производство 5.6.33

MySQL 8.0 полностью меняет внутреннюю реализацию INFORMATION_SCHEMA.См. https://mysqlserverteam.com/mysql-8-0-improvements-to-information_schema/ для объявления.

Я также вижу, что вы используете сортировку utf8 в тесте, но utf8mb4 в работе, и снова, используя разные версии.MySQL также внес исправления в их сопоставления между версиями.Иногда они сталкивались с ошибкой в ​​своей более старой реализации, а иногда спецификации сортировки обновляются комитетом по стандартам, и MySQL изменяется для поддержания совместимости со стандартом.

Многие программные пакеты вносят изменения между основными версиями, ивам не следует ожидать идеальной совместимости между ними.

Вы должны быть уверены, что разрабатываете, тестируете и внедряете в производство, используя одну и ту же версию всех пакетов программного обеспечения в вашем технологическом стеке.Базы данных, языки, платформы, веб-серверы, серверы кэширования, прокси-серверы, балансировщики нагрузки, очереди сообщений, библиотеки и т. Д. Могут вносить незначительные изменения, даже если они не документированы.

Вы рискуете бытьудивляет несовместимостью и ошибками, если вы тестируете на одной версии, но внедряете в производство на другой версии технологического стека.По сути, ваше тестирование не дает никаких гарантий того, что ваш код будет работать на производстве!

0 голосов
/ 06 марта 2019
select  table_name, table_collation
    from  information_schema.tables
    order by  table_name COLLATE utf8_general_ci;

Примечания:

  • S <<code>_ <<code>s - поэтому, если кто-то делает UPPER() или LOWER(), порядок меняется.
  • utf8_bin и utf8_general_ci дают разные ответы;возможно, основная таблица DD изменилась?

(Увы, я не смог добраться до сути вопроса.)

0 голосов
/ 04 марта 2019

Возможно ли, что ваше сопоставление локально отличается от сервера?Например, вы запустили local с mysqld --character-set-server=utf8mb4 или чем-то совершенно отличным от производственного сервера?

Кроме того, базовая операционная система может вести себя по-другому.Я не помню, чтобы видел определенный набор символов, который сортировал '_' и 's' по-разному, но я думаю, что это возможно.

...