Это не должно быть двумя разными параметрами в функции execute?

|
kazansky85 2022-07-02 02:51:41
svetsmirnova 2022-07-02 02:49:21
Какой движок в Percona, в MariaDB?

InnoDB, не указываю движок.
1. Дамп с Percona 8
На другом сервере:
1. Установка Percona 8, create database, zcat dump.sql.gz | mysql db, получил результаты, грохнул datadir.
2. Установка MariaDB 10.5, create database, zcat dump.sql.gz | mysql db, получил результаты, грохнул datadir.

kazansky85 2022-07-02 02:52:37
Написали коллеги, не поверил про «на ноуте за 0.8 секунд выполняется, на сервере N секунд», а тут сам удивился.
svetsmirnova 2022-07-02 02:57:02
а можешь попробовать с SHOW CREATE TABLE перед удалением базы?
svetsmirnova 2022-07-02 02:57:11
версии точные какие?
kazansky85 2022-07-02 03:11:35
svetsmirnova 2022-07-02 02:57:11
версии точные какие?

MariaDB: 10.5.15-MariaDB-0 deb11u1
Percona: 8.0.28-20-1.bullseye

kazansky85 2022-07-02 03:11:53
svetsmirnova 2022-07-02 02:57:02
а можешь попробовать с SHOW CREATE TABLE перед удалением базы?

Надо перкону вернуть, сейчас

kazansky85 2022-07-02 03:17:13
Редактировать много, посмотрел на исходном сервере, и там и там ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci, есть PK, FOREIGN KEY, 4 индекса.
svetsmirnova 2022-07-02 03:17:30
понятно
svetsmirnova 2022-07-02 03:18:10
Можешь послать баг на jira.percona.com и сообщить мне номер? Но будет нужен вывод SHOW CREATE TABLE
svetsmirnova 2022-07-02 03:18:29
Дамп — вообще идеально
kazansky85 2022-07-02 03:19:19
svetsmirnova 2022-07-02 03:18:10
Можешь послать баг на jira.percona.com и сообщить мне номер? Но будет нужен вывод SHOW CREATE TABLE

Дамп точно нет) хорошо, постараюсь

svetsmirnova 2022-07-02 03:19:27
и ещё нужно описать как конкретно устанавливаете сервер
svetsmirnova 2022-07-02 03:20:00
Потому что настройки по умолчанию — это хорошо, но можно и из репы, можно tar.gz generic Linux, можно ещё как-то
kazansky85 2022-07-02 03:21:32
Percona — из репы перконы, MariaDB — из стандартных реп Debian. Грешил на свои кастомные буферпулы и прочие параметры, но нет, не стало лучше.
svetsmirnova 2022-07-02 03:22:08
OK
siv237 2022-07-02 05:48:13
народ подскажите плиз, мне нужно получить состояние нулевого бита из числа десятичного, не могу найти пример
danilcm 2022-07-02 13:02:18
Привет всем
danilcm 2022-07-02 13:03:22
COUNT(a.id AND a.isFull = true)
danilcm 2022-07-02 13:03:22
Подскажите плиз, как правильно написать такую запись, это сортировка где больше всего записей и если в записи есть isFull = true
danilcm 2022-07-02 13:04:18
Вот сам order
ORDER BY COUNT(a.id AND a.isFull = true) DESC
danilcm 2022-07-02 13:06:26
ru_mysql-50520.jpg
Вот, если посмотреть на скриншот, то у multimedia_id = 303 — 3 записи с is_full = true
А у multimedia_id = 299 2 записи с is_full = true
AmokDev 2022-07-02 13:16:30
мне сказали поможет только чудо
AmokDev 2022-07-02 13:16:30
ru_mysql-50526.jpg
рнбят, кто знает как исправить?
S E 2022-07-02 13:17:10
прав нет у пользователя
tzirechnoy 2022-07-02 14:50:54
danilcm 2022-07-02 13:03:22
Подскажите плиз, как правильно написать такую запись, это сортировка где больше всего записей и если в записи есть isFull = true

Sum(a.id is not null and a.isfull)

tzirechnoy 2022-07-02 14:51:49
danilcm 2022-07-02 13:03:22
Подскажите плиз, как правильно написать такую запись, это сортировка где больше всего записей и если в записи есть isFull = true

И да, если a.id — это pkey, то он всегда is not null, первое условие можно выкинуть.

nadya529 2022-07-04 10:21:53
привет! в мариядб поддерживаются плейсхолдеры? я уже 100500 разных вариаций запросов отправила с плейсолдерами, везде один ответ — mariadb.ProgrammingError: You have an error in your SQL syntax

cursor.execute(«‘UPDATE table SET col = ? WHERE id = 1’,str(asd)»)

вот здесь где ошибка может быть?

Pavel Makhnev 2022-07-04 10:23:06
nadya529 2022-07-04 10:21:53
привет! в мариядб поддерживаются плейсхолдеры? я уже 100500 разных вариаций запросов отправила с плейсолдерами, везде один ответ — mariadb.ProgrammingError: You have an error in your SQL syntax

cursor.execute(«‘UPDATE table SET col = ? WHERE id = 1’,str(asd)»)

вот здесь где ошибка может быть?

это не должно быть двумя разными параметрами в функции execute?

Pavel Makhnev 2022-07-04 10:23:31
вы ведь передаете строку )
Pavel Makhnev 2022-07-04 10:23:40
одна строка в виде одного параметра
tzirechnoy 2022-07-04 10:33:22
nadya529 2022-07-04 10:21:53
привет! в мариядб поддерживаются плейсхолдеры? я уже 100500 разных вариаций запросов отправила с плейсолдерами, везде один ответ — mariadb.ProgrammingError: You have an error in your SQL syntax

cursor.execute(«‘UPDATE table SET col = ? WHERE id = 1’,str(asd)»)

вот здесь где ошибка может быть?

Вы не указываете, что это за библиотека доступа.

Да, в большынстве случаев передача параметров требует поддержки билиотеки, потому зависит от того, что за библиотека.
И, кстати, лучшэ не «пробовать» — а читать документацыю.

S E 2022-07-04 11:01:15
nadya529 2022-07-04 10:21:53
привет! в мариядб поддерживаются плейсхолдеры? я уже 100500 разных вариаций запросов отправила с плейсолдерами, везде один ответ — mariadb.ProgrammingError: You have an error in your SQL syntax

cursor.execute(«‘UPDATE table SET col = ? WHERE id = 1’,str(asd)»)

вот здесь где ошибка может быть?

По-моему там скобки напутаны

nadya529 2022-07-04 11:01:36
да, спасибо, я разобралась
nadya529 2022-07-04 11:01:53
а помогите вот в чем:

def readDB(query, cursor, db):
cursor.execute(query)
data = cursor.fetchall()
db.commit()
return data

nadya529 2022-07-04 11:02:01
многие говорят, что не должно быть коммит
nadya529 2022-07-04 11:02:55
но без него у меня так получается:
делаю первый запрос на селект, получаю данные
данные меняются
делаю второй запрос на селект. получаю предыдущие неизменённые данные.
и так до тех пор, пока через другую функцию чтонибудь не запишу в базе, после чего в той функции не отработает коммит
constantinesx 2022-07-04 11:14:43
nadya529 2022-07-04 11:01:53
а помогите вот в чем:

def readDB(query, cursor, db):
cursor.execute(query)
data = cursor.fetchall()
db.commit()
return data

После fetch commit как бы не нужен
У вас даже функция называется read, это подразумевает что вы передаете в нее select, то есть запрос на чтение данных. Commit нужен только после запроса на изменение данных

ZaTRiKC 2022-07-04 11:26:30
constantinesx 2022-07-04 11:14:43
После fetch commit как бы не нужен
У вас даже функция называется read, это подразумевает что вы передаете в нее select, то есть запрос на чтение данных. Commit нужен только после запроса на изменение данных

Не совсем так. При изоляции repeatable read без коммита в открытой транзакции данные будут старые

constantinesx 2022-07-04 11:28:51
ZaTRiKC 2022-07-04 11:26:30
Не совсем так. При изоляции repeatable read без коммита в открытой транзакции данные будут старые

и коммит после селекта — это решение?

nadya529 2022-07-04 11:31:54
ZaTRiKC 2022-07-04 11:26:30
Не совсем так. При изоляции repeatable read без коммита в открытой транзакции данные будут старые

то есть у меня все правильно?

ZaTRiKC 2022-07-04 11:32:10
constantinesx 2022-07-04 11:28:51
и коммит после селекта — это решение?

Решение чего? Если у вас открытая транзакция (автокоммит выключен при коннекте), и вы хотите получать свежие данные при селекте то да. Разумеется, более логичным будет в данном случае включить auto_commit = 1

ZaTRiKC 2022-07-04 11:32:31
nadya529 2022-07-04 11:31:54
то есть у меня все правильно?

Смотря как стоит задача

nadya529 2022-07-04 11:32:50
без коммита я получаю в консоль ошибку: Commands out of sync; you can’t run this command now
nadya529 2022-07-04 11:32:56
с коммитом все работает
nadya529 2022-07-04 11:33:40
ZaTRiKC 2022-07-04 11:32:31
Смотря как стоит задача

тривиальная — прочитать данные из базы простым селектом

constantinesx 2022-07-04 11:34:13
ZaTRiKC 2022-07-04 11:32:10
Решение чего? Если у вас открытая транзакция (автокоммит выключен при коннекте), и вы хотите получать свежие данные при селекте то да. Разумеется, более логичным будет в данном случае включить auto_commit = 1

Я писал про коммит ПОСЛЕ селекта, как написано в коде у Надежды

ZaTRiKC 2022-07-04 11:37:19
constantinesx 2022-07-04 11:34:13
Я писал про коммит ПОСЛЕ селекта, как написано в коде у Надежды

После селекта идёт следующий селект и что? Вам доебаться или понять почему у человека работает не так как он ожидает?

constantinesx 2022-07-04 11:37:51
ZaTRiKC 2022-07-04 11:37:19
После селекта идёт следующий селект и что? Вам доебаться или понять почему у человека работает не так как он ожидает?

ru_mysql-50561.jpg
где следующий селект?

ZaTRiKC 2022-07-04 11:38:31
constantinesx 2022-07-04 11:37:51
где следующий селект?

Вы прочитайте описание проблемы человека

constantinesx 2022-07-04 11:39:14
ZaTRiKC 2022-07-04 11:38:31
Вы прочитайте описание проблемы человека

а функцию оставить как есть можно, да? пусть живет очевидная ошибка в коде, ничего страшного

|