Проблемы установки, настройки и работы Правильной Операционной Системы
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
joesm
- проходил мимо
- Сообщения: 3
- Зарегистрирован: 2012-12-10 7:05:26
Непрочитанное сообщение
joesm » 2015-01-13 15:38:19
Повреждена БД pkgng
Проявилось после обноления pkg до 1.4.4
Код: Выделить всё
# pkg version
pkg: sqlite error while executing DROP INDEX deps_unique;CREATE UNIQUE INDEX dep
s_unique ON deps(name, version, package_id); in file pkgdb.c:2262: UNIQUE constr
aint failed: deps.name, deps.version, deps.package_id
Взял резервную копию из /var/backups/pkg.sql.xz
После восстановления
Код: Выделить всё
[root@ns /var/db/pkg]# pkg version
pkg: sqlite error while executing CREATE TABLE licenses (id INTEGER PRIMARY KEY,
license TEXT NOT NULL UNIQUE );CREATE TABLE pkg_licenses_assoc (package_id INTE
GER REFERENCES packages(id) ON DELETE CASCADE ON UPDATE CASCADE, license_id INTE
GER REFERENCES licenses(id) ON DELETE RESTRICT ON UPDATE RESTRICT, PRIMARY KEY (
package_id, license_id));CREATE VIEW pkg_licenses AS SELECT origin, license FROM
packages INNER JOIN pkg_licenses_assoc ON packages.id = pkg_licenses_assoc.pack
age_id INNER JOIN licenses ON pkg_licenses_assoc.license_id = licenses.id;CREATE
TRIGGER license_insert INSTEAD OF INSERT ON pkg_licenses FOR EACH ROW BEGIN INS
ERT OR IGNORE INTO licenses(license) values (NEW.license);INSERT INTO pkg_licens
es_assoc(package_id, license_id) VALUES ((SELECT id FROM packages where origin =
NEW.origin), (SELECT id FROM categories WHERE name = NEW.name));END; in file pk
gdb.c:2262: table licenses already exists
У кого есть опыт восстановления БД?
joesm
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
ононимус
- проходил мимо
Непрочитанное сообщение
ононимус » 2015-01-13 18:40:52
Как вы восстанавливали? Оно вам пишет что таблицу создать не может потому как она уже есть.
ононимус
-
guest
- проходил мимо
Непрочитанное сообщение
guest » 2015-01-13 22:32:09
joesm писал(а):Повреждена БД pkgng
Проявилось после обноления pkg до 1.4.4
Код: Выделить всё
# pkg version
pkg: sqlite error while executing DROP INDEX deps_unique;CREATE UNIQUE INDEX dep
s_unique ON deps(name, version, package_id); in file pkgdb.c:2262: UNIQUE constr
aint failed: deps.name, deps.version, deps.package_id
Взял резервную копию из /var/backups/pkg.sql.xz
После восстановления
Код: Выделить всё
[root@ns /var/db/pkg]# pkg version
pkg: sqlite error while executing CREATE TABLE licenses (id INTEGER PRIMARY KEY,
license TEXT NOT NULL UNIQUE );CREATE TABLE pkg_licenses_assoc (package_id INTE
GER REFERENCES packages(id) ON DELETE CASCADE ON UPDATE CASCADE, license_id INTE
GER REFERENCES licenses(id) ON DELETE RESTRICT ON UPDATE RESTRICT, PRIMARY KEY (
package_id, license_id));CREATE VIEW pkg_licenses AS SELECT origin, license FROM
packages INNER JOIN pkg_licenses_assoc ON packages.id = pkg_licenses_assoc.pack
age_id INNER JOIN licenses ON pkg_licenses_assoc.license_id = licenses.id;CREATE
TRIGGER license_insert INSTEAD OF INSERT ON pkg_licenses FOR EACH ROW BEGIN INS
ERT OR IGNORE INTO licenses(license) values (NEW.license);INSERT INTO pkg_licens
es_assoc(package_id, license_id) VALUES ((SELECT id FROM packages where origin =
NEW.origin), (SELECT id FROM categories WHERE name = NEW.name));END; in file pk
gdb.c:2262: table licenses already exists
У кого есть опыт восстановления БД?
что будет если выполнить:
Код: Выделить всё
# pkg shell
> SELECT name, version, package_id FROM deps GROUP BY name, version, package_id HAVING count(*) > 1 ;
<что-то выдаст?>
>.q
#
guest
-
joesm
- проходил мимо
- Сообщения: 3
- Зарегистрирован: 2012-12-10 7:05:26
Непрочитанное сообщение
joesm » 2015-01-14 9:14:50
Код: Выделить всё
$ pkg shell
SQLite version 3.8.7 2014-10-17 11:24:17
Enter ".help" for usage hints.
sqlite> select name, version, package_id from deps group by name, version, packa
ge_id having count(*) > 1;
gio-fam-backend|2.34.3|4
sqlite>
joesm
-
guest
- проходил мимо
Непрочитанное сообщение
guest » 2015-01-14 11:33:44
joesm писал(а):Код: Выделить всё
$ pkg shell
SQLite version 3.8.7 2014-10-17 11:24:17
Enter ".help" for usage hints.
sqlite> select name, version, package_id from deps group by name, version, packa
ge_id having count(*) > 1;
gio-fam-backend|2.34.3|4
sqlite>
порт devel/gio-fam-backend удален после апдейта glib20, видимо Вы не читали /usr/ports/UPDATING
и возможно неудачно обновили ПО
два варианта, поправить базу так:
1)
Код: Выделить всё
# sqlite3 /var/db/pkg/local.sqlite "delete from deps where origin='devel/gio-fam-backend';"
или попробовать так:
2)
guest