I’ve various tables for storing comments of various parts of a website that have the same structure. I want to moderate the comments on the admin panel but I can’t do a page for each, so I want to select it all and then LIMIT it. I asked how to do this here on SO and they solved my question but I get the error: 1271 — Illegal mix of collations for operation ‘UNION’.
SELECT *
FROM (
SELECT *
FROM (
SELECT *
FROM noticias_comentarios
ORDER BY
ts_creado DESC
LIMIT 10
) q
UNION ALL
SELECT *
FROM (
SELECT *
FROM carruseles_comentarios
ORDER BY
ts_creado DESC
LIMIT 10
) q
) q
JOIN usuarios u
ON u.id = q.id_usuario
ORDER BY
ts_creado DESC
LIMIT 0, 10
All the 3 tables have the character set utf8 and the collation utf8_spanish_ci.
How can I solve it?
Thank you in advance.
UPDATED with the answer of Larry:
SELECT *
FROM (
SELECT id, id_noticia, id_usuario, comentario, ts_creado
FROM noticias_comentarios
ORDER BY ts_creado DESC
LIMIT 0, 10
UNION ALL
SELECT id, id_carrusel, id_usuario, comentario, ts_creado
FROM carruseles_comentarios
ORDER BY ts_creado DESC
LIMIT 0, 10
) q
JOIN usuarios u ON u.id = q.id_usuario
ORDER BY ts_creado DESC
LIMIT 0, 10
Now produces the error: 1221 — Incorrect usage of UNION and ORDER BY
MySQL Error (1271): Illegal mix of collations for operation 'UNION' in query "(SELECT t1.`subsection_id`, t1.field_id
FROM `sym_fields_subsectionmanager` AS t1
INNER JOIN `sym_fields` AS t2
WHERE t2.`element_name` = 'sidebar-image'
AND t2.`parent_section` = '38'
AND t1.`field_id` = t2.`id`
LIMIT 1)
UNION
(SELECT t1.`subsection_id`, t1.field_id
FROM `sym_fields_subsectiontabs` AS t1
INNER JOIN `sym_fields` AS t2
WHERE t2.`element_name` = 'sidebar-image'
AND t2.`parent_section` = '38'
AND t1.`field_id` = t2.`id`
LIMIT 1)
LIMIT 1"
I’m seeing this when querying a datasource containing an subsection that only allows a single entry. What information can I provide to help track this down (and potentially fix it myself). I don’t know enough about SSM at this point to make an educated guess
It means the two tables have been created in different encodings. You’ll probably find one is latin1
and one is utf8
.
Curiously, this has been occurring more of late I can’t pick why as there have been no core level changes to trigger this. Perhaps we are just at that tipping point where half the extensions specify UTF8 and half specify nothing.
Or it might coincide with a recent MySQL update.
Copy link
Contributor
Author
That was exactly it. I think I went the wrong way and removed the specified collation from the tables being compared, but it works now.
Just so I get this right: this is not a problem caused by Subsection Manager? It’s either caused by Symphony or manual database changes?! I’m a bit confused at the moment.
Copy link
Contributor
Author
It’s not SSM. It does need addressing, but it’s a bit of a manual change for everyone who is including SQL in their extensions.
I’ll need to get @brendo to explain it in a way that makes sense — basically, MySQL defaults are conflicting with the SQL in some extensions (depending on your MySQL server’s configuration) which specify strict collations. It’s not really my area of expertise, so I’d need to do more reading to not make a balls-up of the explaining.
Additional question: Are you using an build that has been updated from Subsection Manager 1 to 2? In this case the tables sym_fields_subsectionmanager
(version 1) and sym_fields_subsectiontabs
(version 2) would have been created at different times – maybe this is a source of this problem?
Copy link
Contributor
Author
Good call: yes, I am. I updated it today. That could definitely be the cause of the collation changes.
Ошибка 1271 (HY000): Несовместное смешивание кодировки при операции ‘=’ в MySQL
MySQL является одним из самых популярных реляционных баз данных, используемых веб-разработчиками по всему миру. Благодаря своим мощным функциям и гибкости, MySQL обеспечивает надежное хранение и управление данными для широкого спектра приложений.
Однако, как и любое программное обеспечение, у MySQL есть свои ограничения и возможные проблемы. Одной из возможных ошибок, с которыми разработчик может столкнуться, является «Ошибка 1271 (HY000): Несовместное смешивание кодировки при операции ‘='».
Проблема возникает в том случае, когда MySQL не может выполнить операцию сравнения (=) на столбцах с разными кодировками. Это означает, что два столбца, с которыми вы хотите сравнить друг друга при использовании оператора «=», имеют разные кодировки.
Кодировки в MySQL представляют собой способ представления символов и набор правил для их интерпретации и сохранения.
В MySQL существует множество поддерживаемых кодировок, таких как ASCII, UTF-8, Latin1 и другие. Каждая кодировка имеет свои особенности и предназначена для использования в конкретных случаях.
По умолчанию MySQL использует кодировку базы данных, указанную при ее создании. Это означает, что все столбцы в этой базе данных будут иметь ту же кодировку. Если вам нужны разные кодировки для разных столбцов, вы должны явно указать это при создании таблицы.
Теперь рассмотрим пример с ошибкой 1271 в MySQL.
Прежде всего, предположим, что у нас есть две таблицы — «table1» и «table2». В «table1» есть столбец «column1» с кодировкой UTF-8, а в «table2» есть столбец «column2» с кодировкой Latin1. Попробуем выполнить следующий SQL-запрос:
SELECT * FROM table1 WHERE column1 = (SELECT column2 FROM table2);
В результате выполнения этого запроса мы получим ошибку: ERROR 1271 (HY000): Illegal mix of collations for operation ‘=’.
Эта ошибка возникает потому, что MySQL не может выполнить операцию сравнения (=) между столбцами с разными кодировками.
Теперь давайте посмотрим на несколько способов решения этой проблемы.
1. Изменение кодировки столбца
В этом случае мы можем изменить кодировку одного из столбцов так, чтобы он совпадал с кодировкой другого. Например, мы можем изменить кодировку столбца «column2» в «table2» на UTF-8, чтобы она соответствовала кодировке «column1» в «table1».
ALTER TABLE table2 MODIFY column2 VARCHAR(255) CHARACTER SET utf8;
2. Использование оператора COLLATE
Если нам необходимо сохранить разные кодировки для столбцов, мы можем использовать оператор COLLATE, чтобы явно указать, какую кодировку использовать при выполнении операции сравнения.
SELECT * FROM table1 WHERE column1 COLLATE utf8_general_ci = (SELECT column2 FROM table2);
В этом примере мы использовали направленное изменение коллации utf8_general_ci для столбца «column1» в операторе сравнения. Это позволяет MySQL разрешить операцию сравнения между столбцами с разными кодировками.
3. Изменение кодировки базы данных
В некоторых случаях может быть полезно изменить кодировку всей базы данных. Вы можете это сделать с помощью следующей команды:
ALTER DATABASE your_database_name CHARACTER SET utf8;
Эта команда изменит кодировку базы данных «your_database_name» на UTF-8. В результате все новые таблицы будут созданы с указанной кодировкой.
Ошибки, связанные с несовместимыми кодировками, могут оказаться неожиданными и запутывающими для разработчиков. Однако, знание основ кодировки в MySQL и способов ее изменения поможет вам избежать подобных проблем и сохранить правильное функционирование вашей системы.
Помимо приведенных выше способов решения этой конкретной ошибки, регулярное обновление MySQL и проверка кодировки при создании и изменении таблиц могут помочь предотвратить другие проблемы связанные с кодировками.
Надеюсь, что данная статья помогла вам понять появление ошибки 1271 (HY000) и дала вам инструменты для решения данной проблемы в MySQL. Успешной работы с базами данных!
Получаем ошибку ниже при попытке выполнить выбор в хранимой процедуре в MySQL.
Нелегальное сочетание сортировок (latin1_general_cs, IMPLICIT) и (latin1_general_ci, IMPLICIT) для операции ‘=’
Любая идея о том, что здесь может быть неправильным?
Сравнение таблицы latin1_general_ci
, а столбца в предложении where — latin1_general_cs
.
Ответ 1
Как правило, это вызвано сравнением двух строк несовместимого сопоставления или попыткой выделить данные другого сопоставления в объединенный столбец.
Предложение COLLATE
позволяет указать параметры сортировки, используемые в запросе.
Например, следующее предложение WHERE
всегда будет содержать сообщение об ошибке, которую вы опубликовали:
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Ваше решение состоит в том, чтобы указать общее сопоставление для двух столбцов в запросе. Вот пример, который использует предложение COLLATE
:
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Другой вариант — использовать оператор BINARY
:
BINARY str — сокращение от CAST (st как AS BINARY).
Ваше решение может выглядеть примерно так:
SELECT * FROM table WHERE BINARY a = BINARY b;
или
SELECT * FROM table ORDER BY BINARY a;
Ответ 2
TL; DR
Либо измените сопоставление одного (или обоих) строк так, чтобы они соответствовали, либо добавили в выражение выражение COLLATE
.
-
Что это за «сортировка» в любом случае?
Как описано в Наборы символов и сортировки в целом:
A набор символов представляет собой набор символов и кодировок. сопоставление — это набор правил для сравнения символов в наборе символов. Позвольте сделать различие понятным на примере мнимого набора символов.
Предположим, что у нас есть алфавит с четырьмя буквами: «
A
» , «B
» , «A
» , «B
» . Мы даем каждой букве число: «A
» = 0, «B
» = 1, «A
» = 2, «B
» = 3. Буква «A
» является символом, число 0 является кодировкой для «A
» , а комбинация всех четырех букв и их кодировок — это набор символов .Предположим, что мы хотим сравнить два строковых значения: «
A
» и «B
» . Самый простой способ сделать это — посмотреть кодировки: 0 для «A
» и 1 для «B
» . Поскольку 0 меньше 1, мы говорим: «A
» меньше «B
» . Мы только что применили сопоставление с нашим набором символов. Сопоставление — это набор правил (только одно правило в этом случае): «сравнить кодировки». Мы называем это простейшее из всех возможных сопоставлений двоичным сопоставлением.Но что, если мы хотим сказать, что строчные и прописные буквы эквивалентны? Тогда у нас будет по крайней мере два правила: (1) обрабатывать строчные буквы «
A
» и «B
» как эквивалентные «A
» и «B
» ; (2), затем сравните кодировки. Мы называем это нечувствительным к регистру сопоставлением. Это немного сложнее, чем двоичная сортировка.В реальной жизни большинство наборов символов имеют много символов: не только «
A
» и «B
» , но целые алфавиты, иногда несколько алфавитов или восточные системы письма с тысячами символов, а также множество специальных символов и знаков препинания Метки. Кроме того, в реальной жизни большинство коллайлов имеют много правил, а не только для того, чтобы различать буквенный регистр, но также и для того, чтобы отличить акценты ( «акцент» — это знак, прикрепленный к персонажу, как на немецком языке «Ö
» ), и для многосимвольные сопоставления (например, правило «Ö
» = «OE
» в одном из двух германских сопоставлений).Другие примеры приведены в примерах эффекта сортировки.
-
Хорошо, но как MySQL решает, какое сопоставление использовать для данного выражения?
Как описано в Сочетание выражений:
В подавляющем большинстве утверждений очевидно, что используется MySQL для сопоставления операции сравнения. Например, в следующих случаях должно быть ясно, что сортировка — это сортировка столбца
charset_name
:SELECT x FROM T ORDER BY x; SELECT x FROM T WHERE x = x; SELECT DISTINCT x FROM T;
Однако с несколькими операндами может быть неоднозначность. Например:
SELECT x FROM T WHERE x = 'Y';
Если сравнение использует сортировку столбца
x
или строкового литерала'Y'
? Обаx
и'Y'
имеют сопоставления, так что сопоставление имеет приоритет?Стандартный SQL разрешает такие вопросы, используя то, что раньше называлось правилами «принуждаемости».
[ deletia ]
MySQL использует значения коэрцитивности со следующими правилами для устранения неоднозначностей:
-
Используйте сопоставление с наименьшим значением принуждения.
-
Если обе стороны имеют одну и ту же коэрцитивность, то:
-
Если обе стороны являются Unicode или обе стороны не являются Unicode, это ошибка.
-
Если одна из сторон имеет набор символов Unicode, а другая сторона имеет набор символов, отличных от Юникода, выигрывает сторона с символьным набором Unicode, а автоматическое преобразование набора символов применяется к стороне, отличной от Юникода. Например, следующий оператор не возвращает ошибку:
SELECT CONCAT(utf8_column, latin1_column) FROM t1;
Он возвращает результат, имеющий набор символов
utf8
и ту же сортировку, что иutf8_column
. Значенияlatin1_column
автоматически преобразуются вutf8
перед конкатенацией. -
Для операции с операндами из того же набора символов, но которые смешивают сортировку
_bin
и a_ci
или_cs
, используется сортировка_bin
. Это похоже на то, как операции, в которых смешиваются недвоичные и двоичные строки, оценивают операнды как двоичные строки, за исключением того, что они предназначены для сопоставлений, а не для типов данных.
-
-
-
Итак, что такое «незаконное сочетание сортировок»?
«Неправильное сочетание сопоставлений» возникает, когда выражение сравнивает две строки разных сопоставлений, но имеет равную совместимость, а правила принуждения не могут помочь разрешить конфликт. Эта ситуация описана в третьей цитате в приведенной выше цитате.
Конкретная ошибка, заданная в вопросе
Illegal mix of collations (latin1_general_cs,IMPLICIT) and (latin1_general_ci,IMPLICIT) for operation '='
, говорит нам о том, что было проведено сравнение равенства между двумя строками, не относящимися к Unicode, с равной совместимостью. Кроме того, он говорит нам, что сопоставления не были указаны явно в заявлении, а скорее подразумевались из источников строк (например, метаданных столбца). -
Все это очень хорошо, но как решить такие ошибки?
Как показывают приведенные выше выдержки из руководства, эта проблема может быть решена несколькими способами, из которых два являются разумными и рекомендуемыми:
-
Измените сортировку одной (или обеих) строк так, чтобы они совпадали, и больше не существует двусмысленности.
Как это можно сделать, зависит от того, откуда пришла строка: Литеральные выражения принимают сопоставление, указанное в системной переменной
collation_connection
; значения из таблиц берут сопоставление, указанное в их метаданных столбцов. -
Настроить одну строку, чтобы она не была принудительной.
Я пропустил следующую цитату из вышеперечисленного:
MySQL присваивает значения коэрцитивности следующим образом:
-
Явное предложение
COLLATE
обладает способностью к нулю (не является коэрцитивной). -
Конкатенация двух строк с разными сопоставлениями имеет коэрцитивность 1.
-
Сопоставление столбца или параметра хранимой процедуры или локальной переменной имеет совместимость с 2.
-
«Системная константа» (строка, возвращаемая такими функциями, как
USER()
илиVERSION()
) обладает способностью 3. -
Сопоставление литерала имеет коэрцитивность 4.
-
NULL
или выражение, полученное изNULL
, имеет коэрцитивность 5.
Таким образом, просто добавление предложения
COLLATE
в одну из строк, используемых при сравнении, заставит использовать эту сортировку. -
В то время как другие были бы ужасно плохой практикой, если бы они были развернуты только для устранения этой ошибки:
-
Принудите одну (или обе) строки к некоторым другим значениям коэрцитивности, чтобы иметь преимущество.
Использование
CONCAT()
илиCONCAT_WS()
приведет к тому, что строка с способностью 1; и (если в хранимой процедуре) использование параметров/локальных переменных приведет к строкам с способностью 2. -
Измените кодировку одной (или обеих) строк так, чтобы она была Unicode, а другая — не.
Это можно сделать путем перекодирования с помощью
CONVERT(expr USING transcoding_name)
; или путем изменения базового набора символов (например, изменение столбца, изменениеcharacter_set_connection
для литеральных значений или отправка их с клиента в другую кодировку и изменениеcharacter_set_client
/добавление средства ввода символов). Обратите внимание, что изменение кодировки приведет к другим проблемам, если некоторые желаемые символы не могут быть закодированы в новом наборе символов. -
Измените кодировки одной (или обеих) строк так, чтобы они были одинаковыми и изменили одну строку, чтобы использовать соответствующую сортировку
_bin
.Методы изменения кодировок и сопоставлений были подробно описаны выше. Этот подход был бы малопригодным, если бы на самом деле требовалось применять более сложные правила сопоставления, чем предлагалось с помощью сортировки
_bin
.
-
Ответ 3
Добавление моего 2c к обсуждению будущих googlers.
Я изучал аналогичную проблему, когда я получил следующую ошибку при использовании пользовательских функций, которые получили параметр varchar:
Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and
(utf8_general_ci,IMPLICIT) for operation '='
Используя следующий запрос:
mysql> show variables like "collation_database";
+--------------------+-----------------+
| Variable_name | Value |
+--------------------+-----------------+
| collation_database | utf8_general_ci |
+--------------------+-----------------+
Я смог сказать, что БД использовала utf8_general_ci, а таблицы были определены с помощью utf8_unicode_ci:
mysql> show table status;
+--------------+-----------------+
| Name | Collation |
+--------------+-----------------+
| my_view | NULL |
| my_table | utf8_unicode_ci |
...
Обратите внимание, что представления имеют NULL-сопоставление. Похоже, что представления и функции имеют определения сортировки, хотя этот запрос показывает null для одного представления. Используемая сортировка — это сортировка БД, которая была определена при создании представления/функции.
Печальное решение заключалось в том, чтобы изменить сортировку db и воссоздать представления/функции, чтобы заставить их использовать текущую сортировку.
-
Изменение сортировки db:
ALTER DATABASE mydb DEFAULT COLLATE utf8_unicode_ci;
Надеюсь, это поможет кому-то.
Ответ 4
Иногда бывает сложно конвертировать кодировки, особенно в базы данных с огромным количеством данных. Я думаю, что лучший вариант — использовать «двоичный» оператор:
e.g : WHERE binary table1.column1 = binary table2.column1
Ответ 5
У меня была аналогичная проблема, я пытался использовать процедуру FIND_IN_SET со строкой переменной.
SET @my_var = 'string1,string2';
SELECT * from my_table WHERE FIND_IN_SET(column_name,@my_var);
и получал ошибку
Код ошибки: 1267. Недопустимое сочетание сортировок (utf8_unicode_ci, IMPLICIT) и (utf8_general_ci, IMPLICIT) для операции «find_in_set»
Короткий ответ:
Не нужно менять переменные collation_YYYY, просто добавьте правильную сортировку рядом с объявлением переменной, т.е.
SET @my_var = 'string1,string2' COLLATE utf8_unicode_ci;
SELECT * from my_table WHERE FIND_IN_SET(column_name,@my_var);
Длинный ответ:
Сначала я проверил переменные сортировки:
mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
+----------------------+-----------------+
| collation_database | utf8_general_ci |
+----------------------+-----------------+
| collation_server | utf8_general_ci |
+----------------------+-----------------+
Затем я проверил сортировку таблицы:
mysql> SHOW CREATE TABLE my_table;
CREATE TABLE `my_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`column_name` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=125 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Это означает, что моя переменная была настроена со значением по умолчанию utf8_general_ci, тогда как моя таблица была настроена как utf8_unicode_ci.
Добавив команду COLLATE рядом с объявлением переменной, сопоставление переменных соответствовало настройке сопоставления для таблицы.
Ответ 6
Вы можете попробовать этот script, который преобразует все ваши базы данных и таблицы в utf8.
Ответ 7
Решение, если речь идет о литералах.
Я использую интеграцию данных Pentaho и не могу указать синтаксис sql.
Использование очень простого поиска в БД дало ошибку
Msgstr «Недействительное сочетание сортировок (cp850_general_ci, COERCIBLE) и (latin1_swedish_ci, COERCIBLE) для операции ‘=’»
Сгенерированный код был
«SELECT DATA_DATE AS last_DATA_DATE FROM hr_cc_normalised_data_date_v WHERE PSEUDO_KEY =?»
Сокращение истории сократило поиск до представления, и когда я выпустил
mysql> show full columns from hr_cc_normalised_data_date_v;
+------------+------------+-------------------+------+-----+
| Field | Type | Collation | Null | Key |
+------------+------------+-------------------+------+-----+
| PSEUDO_KEY | varchar(1) | cp850_general_ci | NO | |
| DATA_DATE | varchar(8) | latin1_general_cs | YES | |
+------------+------------+-------------------+------+-----+
который объясняет, откуда берется «cp850_general_ci».
Вид был просто создан с помощью ‘SELECT’ X ‘,……’
В соответствии с такими литералами, как это, следует наследовать их набор символов и сортировку из настроек сервера, которые были правильно определены как «latin1» и «latin1_general_cs»,
так как этого явно не случилось, я заставил его создать вид
CREATE OR REPLACE VIEW hr_cc_normalised_data_date_v AS
SELECT convert('X' using latin1) COLLATE latin1_general_cs AS PSEUDO_KEY
, DATA_DATE
FROM HR_COSTCENTRE_NORMALISED_mV
LIMIT 1;
теперь он показывает latin1_general_cs для обоих столбцов, и ошибка исчезла.:)
Ответ 8
MySQL действительно не любит смешивать сортировки, если только он не может принудить их к одному (что явно не возможно в вашем случае). Не можете ли вы просто заставить ту же сортировку использовать предложение COLLATE? (или более простой BINARY
ярлык, если применимо…).
Ответ 9
Если столбцы, с которыми у вас возникают проблемы, являются «хэшами», тогда рассмотрим следующее…
Если «хэш» является двоичной строкой, вы действительно должны использовать тип данных BINARY(...)
.
Если «хеш» — это шестнадцатеричная строка, вам не нужно utf8, и этого следует избегать из-за проверки символов и т.д. Например, MySQL MD5(...)
дает 32-байтовую строку с фиксированной длиной. SHA1(...)
дает 40-байтовую шестую строку. Это можно сохранить в CHAR(32) CHARACTER SET ascii
(или 40 для sha1).
Или, еще лучше, сохраните UNHEX(MD5(...))
в BINARY(16)
. Это уменьшает половину размера столбца. (Тем не менее, это делает его непечатаемым.) SELECT HEX(hash) ...
, если вы хотите, чтобы он был читабельным.
Сравнение двух столбцов BINARY
не имеет проблем с сортировкой.
Ответ 10
Возможное решение: конвертировать всю базу данных в UTF8 (см. также question).
Ответ 11
Другим источником проблемы с сопоставлениями является таблица mysql.proc
. Проверьте сортировки ваших процедур хранения и функций:
SELECT
p.db, p.db_collation, p.type, COUNT(*) cnt
FROM mysql.proc p
GROUP BY p.db, p.db_collation, p.type;
Также обратите внимание на столбцы mysql.proc.collation_connection
и mysql.proc.character_set_client
.
Ответ 12
Если у вас установлен phpMyAdmin, вы можете следовать инструкциям, приведенным в следующей ссылке: https://mediatemple.net/community/products/dv/204403914/default-mysql-character-set-and-collation Необходимо сопоставить сопоставление базы данных с сопоставлением всех таблиц, а также полей таблиц, а затем перекомпилировать все сохраненные данные. процедуры и функции. С этим все должно работать снова.
Ответ 13
Я использовал ALTER DATABASE mydb DEFAULT COLLATE utf8_unicode_ci;
, но не работал.
В этом запросе:
Select * from table1, table2 where table1.field = date_format(table2.field,'%H');
Эта работа для меня:
Select * from table1, table2 where concat(table1.field) = date_format(table2.field,'%H');
Да, только concat
.
Ответ 14
Этот код необходимо поместить внутри Запустить SQL-запрос/запросы в базе данных
SQL QUERY WINDOW
ALTER TABLE `table_name` CHANGE `column_name` `column_name` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL;
Пожалуйста, замените имя_таблицы и имя_столбца соответствующим именем.
Сайт давно не обновлялся, стоял на старом php5.3 и само обновление сайта от 17 года. Поставил 7.3 работал нормально, обновил до последней версии до конца не обновилось и полетело все. SEL ECT NULL AS SITE_ID, NAME, VALUE /var/www/vhosts/site.ru/httpdocs/bitrix/modules/main/lib/db/mysqliconnection.php:137 Пытался сменить кодировку на utf8_unicode_ci не помогло, помогите пожалуйста решить проблему |
|
Пользователь 2856829 Постоянный посетитель Сообщений: 8 |
#2 30.09.2019 11:19:06 Зайдите в используемую бд и выполните: ALTER слитно
|
||
Пользователь 125357 Постоянный посетитель Сообщений: 152 |
#3 01.10.2019 16:38:54 Спасибо! Реально решилась проблема. Идем на хостинг в phpMyAdmin и выполняем запрос в SQL
В начале ALTER слитно Нужен проект или доработка? Пиши в личку, я всегда на связи! Скайп — sangro0307 |
||
Спасибо! + к карме, тоже помогло! |
|
Человеческое спасибо. Помогло. +1 |
|
Пользователь 2560551 Заглянувший Сообщений: 1 |
#9 11.12.2019 16:14:39
Спасибо, добрый человек! |
||||
Спасибо, добрый человек и от меня! |
|
Пользователь 64241 Заглянувший Сообщений: 7 |
#17 30.03.2020 13:21:41
Спасибо большое! С уважением, |
||||
Добрый день. [Bitrix\Main\DB\ConnectionException] Mysql connect error [h812298539.mysql]: (1045) Access denied for user ‘h812298539_fit’@’10.12.2.156’ (using password: YES) (400) Подскажите, пожалуйста, в чем может быть дело? |
|
Пользователь 136059 Гуру Сообщений: 5439 |
#19 09.04.2020 15:13:08
Файлы /bitrix/.settings.php и /bitrix/php_interface/dbconn.php Голосуй за идеи по развитию API Bitrix: |
||
Пользователь 1544393 Заглянувший Сообщений: 2 |
#20 11.04.2020 11:16:21
Спасибо, нашла. |
||||
Пользователь 180446 Эксперт Сообщений: 684 |
#21 11.04.2020 12:22:55
Олесь, это отговорки. Не нужен номер, используй текст
|
||||
После ввода запроса админка вернулась, но появилась другая ошибка Fatal error: Cannot use intec\core\base\Object as Object because ‘Object’ is a special class name in /var/www/www-root/data/www/red34025.rdock.ru/bitrix/modules/intec.constructorlite/classes/models/Build.php on line 6 Вообще изначально делалось обновление Битрикса, модулей. На половине отвалился. |
|
Пользователь 2090153 Постоянный посетитель Сообщений: 193 |
#24 05.06.2020 13:05:33
/modules/intec.constructorlite/ — так это вам уже к авторам модуля. |
||
Пользователь 4319440 Заглянувший Сообщений: 14 |
#25 12.06.2020 12:18:42 Короче дело было в PHP, пришлось вернуть старую версию. |