const [data, setData] = useState(null);
useEffect(() => {
const controller = new AbortController()
fetchData(controller.signal).then(setData)
return () => controller.abort()
}, [fetchData, setData])
const data = useMemo(() => array.map(mapper).filter(predicate).reduce(reducer), [array])
const handler = useCallback(() => {
// что-то сделать
}, [])
useEffect(() => {
handler(value)
// если не использовать useCallback, эффект будет срабатывать постоянно
}, [handler, value])
@font-face {
font-family: 'Geometria';
src: local('Geometria Thin'), local('Geometria-Thin'),
url('~@/assets/fonts/geometria/Geometria-Thin.woff2') format('woff2'),
url('~@/assets/fonts/geometria/Geometria-Thin.woff') format('woff');
font-weight: 100;
font-style: normal;
}
<template>
<div>
<!-- В шаблоне не вызывают какие-либо функций. Только выводят готовые значения -->
{{localeDate}}
</div>
</template>
<script>
{
data: () => ({
// Дата хранится в виде числа. Не обязательно в state компонента. Но и в других местах тоже
date: 1580558031264,
}),
computed: {
localeDate() {
// Конвертируем число в строку. Для этого существуют специальные методы
// toLocaleDateString() или toLocaleString() или toLocaleTimeString()
// Итоговая строка будет зависеть от локализации системы пользователя.
// Для русской локали это будет "01.02.2020",
// для американской "2/1/2020",
// для немецкой — "1.2.2020"
// Вы НЕ должны устанавливать формат даты самостоятельно
return (new Date(this.date)).toLocaleDateString()
},
},
// Если нужно изменять дату в реальном времени вешаем таймер
created() {
this.intervalId = setInterval(() => this.date = Date.now(), 1000); // Обновляем значения не чаще раза в секунду. А то и реже.
},
// Если повесили таймер, то его нужно отключать
beforeDestroy() {
if (this.intervalId) clearInterval(this.intervalId)
},
}
</script>
sudo service mysql stop
sudo mysqld --skip-grant-tables --user=root
/etc/mysql/mysql.conf.d/mysqld.cnf
в секцию [mysqld]
добавить строчкуskip-grant-tables
и выполнить sudo service mysql restart
mysql -u root
UPDATE mysql.user SET authentication_string=PASSWORD('<новый пароль>'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
sudo service mysql restart
skip-grant-tables
в /etc/mysql/mysql.conf.d/mysqld.cnf
- удалить эту строчку.try:
conn = pyodbc.connect(...)
except Exception as err:
print(err.args[1].encode("cp1252").decode("cp1251"))
button:active, button:focus {
outline: none;
}
button::-moz-focus-inner {
border: 0;
}
SHOW TABLES FROM database_name
прекрасно работает когда база не выбрана. Здесь мы показываем таблицы в базе, а не в $db_table. Исходя из вашего нейминга, вы просите таблицу показать ее таблицы, что абсурдно само по себе. Обращайтесь к базе. Или, если вы базу предварительно уже выбрали, то достаточно SHOW TABLES
.SELECT * FROM table_name
уже сначала нужно выбрать базу данных (которую вы опрашивали на предмет таблиц в первом запросе), или же обращаться к таблице в формате database_name.table_name. SELECT COUNT(*) FROM database_name.table_name
. SELECT table_name, table_rows
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database_name';
+-----------------------+------------+
| table_name | table_rows |
+-----------------------+------------+
| wp_terms | 10 |
| wp_yoast_seo_meta | 61 |
| wp_yoast_seo_links | 33 |
| wp_commentmeta | 0 |
| wp_term_taxonomy | 10 |
| wp_ewwwio_queue | 352 |
| wp_usermeta | 114 |
| wp_options | 281 |
| wp_users | 5 |
| wp_term_relationships | 49 |
| wp_ewwwio_images | 1048 |
| wp_links | 0 |
| wp_postmeta | 21408 |
| wp_termmeta | 0 |
| wp_comments | 0 |
| wp_posts | 738 |
+-----------------------+------------+
SHOW TABLE STATUS
, находять в выбранной базе данных. Точность подсчета количества строк на InnoDB такая же, как и предыдущем методе, но зато здесь будет еще много полезной информации. Например - avg_row_length, data_length, index_length и другое.