--force, -f
Ignore all errors; continue even if an SQL error occurs during a table dump.
One use for this option is to cause mysqldump to continue executing even when it encounters a view that has become invalid because the definition refers to a table that has been dropped. Without --force, mysqldump exits with an error message. With --force, mysqldump prints the error message, but it also writes an SQL comment containing the view definition to the dump output and continues executing.
If the --ignore-error option is also given to ignore specific errors, --force takes precedence.
In general, you cannot modify a table and select from the same table in a subquery.
Це́лостность ба́зы да́нных (database integrity) — соответствие имеющейся в базе данных информации её внутренней логике, структуре и всем явно заданным правилам.
mysql> SET profiling = 1;
mysql> SELECT * FROM table_name;
mysql> SHOW PROFILES;
mysql> SHOW PROFILE FOR QUERY 1;
utf8
в MySQL - это псевдоним для utf8mb3
(3-байтовое кодирование). Для полноценной работы UTF-8
(4-байтовое кодирование) в MYSQL 5.5 добавлена кодировка utf8mb4
. NOTE: you should not just strip, but replace with replacement character U+FFFD to avoid unicode attacks, mostly XSS:
unicode.org/reports/tr36/#Deletion_of_Noncharacterspreg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $value);
SELECT field_name AS fn
SELECT field_name fn
CREATE TRIGGER `before_insert_table` BEFORE INSERT ON `table` FOR EACH ROW BEGIN
IF `NEW`.`field_1` > `NEW`.`field_2` THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'An error occurred';
END IF;
END
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;
STOP SLAVE;
RESET SLAVE;
RESET MASTER;
my.cnf
на всех серверах и перезапустить MySQL.FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;
mysqldump -uuser_name db_name | mysql --host=SERVER_2_IP_ADDR -uuser_name -ppassword -C db_name
mysql -e "select * from table_name" -u user_name -p******** database_name > file_name.txt
CREATE TRIGGER `before_insert_table_name` BEFORE INSERT ON `table_name`
FOR EACH ROW
BEGIN
SET `NEW`.`z` = `NEW`.`x` + `NEW`.`y`;
END
CREATE TRIGGER `before_update_table_name` BEFORE UPDATE ON `table_name`
FOR EACH ROW
BEGIN
IF (`OLD`.`x` <=> `NEW`.`x`) = 0 OR (`OLD`.`y` <=> `NEW`.`y`) = 0 THEN
SET `NEW`.`z` = `NEW`.`x` + `NEW`.`y`;
END IF;
END
[mysqld]
innodb_file_per_table=1
Вы не можете удалить файл данных из системного табличного пространства. Чтобы уменьшить размер системного табличного пространства, используйте следующую процедуру:
- Используйте mysqldump для вывода всех ваших таблиц InnoDB, включая таблицы InnoDB, расположенные в базе данных MySQL.
- Остановите сервер.
- Удалите все существующие файлы табличного пространства (* .ibd), включая файлы ibdata и ib_log. Не забудьте удалить * .ibd файлы для таблиц, расположенных в базе данных MySQL.
- Настройте новое табличное пространство.
- Перезагрузите сервер.
- Импортируйте файлы дампа.
Примечание: если в ваших базах данных используется только механизм InnoDB, может быть проще сбросить все базы данных, остановить сервер, удалить все базы данных и файлы журналов InnoDB, перезапустить сервер и импортировать файлы дампа.
SELECT * FROM `table_name` WHERE `column_name` IN ('A', 'B', 'C') ORDER BY FIELD (`column_name`, 'A', 'B', 'C')
SELECT * FROM `table_name` WHERE `column_name` IN ('A', 'B', 'C') ORDER BY FIND_IN_SET (`column_name`, 'A,B,C')
A stored function or trigger cannot modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger.
[mysqld]
...
!includedir /etc/my.cnf.d
GRANT SELECT,INSERT,UPDATE,DELETE ON database_name.table_name TO 'username'@'localhost' IDENTIFIED BY 'password';