Lookbehind теперь является официальной частью спецификации ES 2018 .
Похоже, в то время Брендан Эйх не знал о том, что его существование (потому что Netscape был построен на более старой версии Perl):
Это было в 1998 году, работа Netscape 4, которую я делала в '97, была основана на Perl 4 (!), но мы предложили ECMA TC39 TG1 (группа JS - все было иначе, включая капитализацию), что-то основано на Perl 5. Мы не получили все, и нам пришлось рационализировать некоторые очевидные причуды.
Я не помню, как lookbehind (появившийся в Perl 5.005 в июле 98 года) был специально выделен. Waldemar может вспомнить больше, я передал ему ключи JS внутри netscape.com, чтобы пойти на mozilla.org.
Если вы играете, чтобы написать предложение или мини-спецификацию (в стиле ES5 даже ), дай мне знать.
/ be
blockquote>В списке рассылки было множество разных элементов с попытками включить его , но он по-прежнему представляется довольно сложной особенностью, потому что EcmaScript Regular Expressions - это backtracking , а backtracking необходим в lookbehind при работе с группами захвата. Это может привести к таким проблемам, как катастрофическое обратное отслеживание при неправильном использовании.
В какой-то момент это было предложено для ES6 / Es 2015, но оно никогда не делало проект, не говоря уже о спецификации , В последнем выпуске в обсуждении кажется, что никто не взял на себя задачу его реализации. Если кто-то чувствует себя призванным для написания реализации, они могут зарегистрироваться для ES Обсудить список и предложить его.
Обновление до 2015 года:
В мае 2015 года , Nozomu Katō предложил реалистичную реализацию ES7 .
Обновление сентябрь 2015:
Regex Look-behind был добавлен как этап 0 Предложение .
Обновление мая 2017 года:
Предложение находится на этапе 3 . Это означает, что теперь по крайней мере два браузера должны реализовать его, чтобы он стал частью следующего стандарта EcmaScript. Как отметил @martixy в комментариях, Chrome реализовал его за экспериментальным флагом JS .
InnoDB нуждается в файлах ib_log для восстановления данных, но он также нуждается в файле ibdata1, который содержит словарь данных и иногда содержит ожидающие данные для таблиц.
Словарь данных - это разновидность дублирующей системы, которая записывает структуру таблицы, а также сопоставляет идентификатор таблицы с физическим .ibd-файлом, который содержит данные таблицы.
Вы не можете просто перемещать файлы .ibd без словаря данных InnoDB, а словарь данных должен соответствовать идентификатору таблицы, найденному внутри .ibd-файла. Вы можете повторно подключить файл .ibd и восстановить данные, но процедура не для слабонервных. См. http://www.chriscalender.com/recovering-an-innodb-table-from-only-an-ibd-file/
Вы можете восстановить структуру, используя .frm с некоторым обманом файла, но вы не сможете создавать их в виде таблиц InnoDB. Вот блог, посвященный методу восстановления файлов .frm в виде таблиц MyISAM: http://www.percona.com/blog/2008/12/17/recovering-create-table-statement-from-frm-file /
Вы не сможете использовать PMA для этого. Вам нужен доступ суперпользователя к каталогу данных на сервере.
Вы можете восстановить структуру таблицы из файлов .frm и данных из файлов ibd.
С помощью инструмента mysqlfrm, который является частью Утилиты MySQL
shell> mysqlfrm --diagnostic myfile.frm
Восстановить таблицу в базе данных с тем же именем, используя структуру таблицы.
mysql> CREATE mytable (int i);
Отменить табличное пространство только что созданной таблицы.
mysql> ALTER TABLE mytable DISCARD TABLESPACE;
Скопируйте файл orphan .idb из каталога резервного копирования в новый каталог базы данных. Убедитесь, что .ibd-файл имеет необходимые права доступа к файлам.
Импортирует файл-сирот .ibd. Выдается предупреждение о том, что InnoDB попытается импортировать файл без проверки схемы.
mysql> ALTER TABLE r IMPORT TABLESPACE;SHOW WARNINGS;
Я восстановил таблицу только из файлов .frm
и .idb
.
mysqlfrm
в командной строке (cmd). .frm
файлов, используя команду mysqlfrm
в cmd.
mysqlfrm --diagnostic <path>/example_table.frm
Затем вы можете получить запрос sql для создания такой же структурированной таблицы. Например:
CREATE TABLE `example_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(150) NOT NULL, `photo_url` varchar(150) NOT NULL, `password` varchar(600) NOT NULL, `active` smallint(6) NOT NULL, `plan` int(11) NOT NULL, PRIMARY KEY `PRIMARY` (`id`) ) ENGINE=InnoDB;
Я создал таблицу, используя вышеупомянутый запрос sql.
- В-третьих, я побежал этот запрос для удаления новых данных таблицы.
ALTER TABLE example_table DISCARD TABLESPACE;
Удаленные соединения между новым файлом
.frm
и.idb
, Также удален файл .idb в папке.
- В-четвертых, я поместил старый файл
.idb
в новую папку. И я запускал этот запрос для импорта старых данных.
ALTER TABLE example_table IMPORT TABLESPACE;
Это импортированные данные из файла
.idb
и, наконец, я восстановленная старая таблица данных. Я уверен, что это вам поможет.Спасибо.