If you are situated West of UTC you might be running into the timezone issue I
reported. The work around I had was to change this
line<https://github.com/peeringdb/peeringdb-py/blob/289524928c62115da114a0a05e591c940b03ac4f/peeringdb/_update.py#L97>
in peeringdb/_update.py
from
self.start_time = datetime.now()
to
self.start_time = datetime.utcnow()
________________________________
From: Pdb-tech <[email protected]> on behalf of Brian
Dickson <[email protected]>
Sent: Friday, May 15, 2020 10:43:44 AM
To: [email protected]
Subject: Re: [PDB Tech] Problem doing initial 'peeringdb sync', foreign key
constraint fails?
Arnold Nipper said to send to this list.
(This is kind of urgent for me, my goal is to get a snapshot of the data, so
any alternative workaround would be helpful in the meantime.)
I'm in the process of setting up a local copy, and have run into a problem
after getting the peeringdb-py stuff set up.
When I do peeringdb sync (with the correct mysql database UTF8 stuff and
everything,), I am currently getting a persistent error which aborts the sync
with no data in the tables:
(Apologies in advance for the long error output text.)
Syncing to https://www.peeringdb.com/api
Updating resources: org fac net ix ixfac ixlan ixpfx netfac netixlan poc
Fetching & updating all: org
Updates to be processed: 5
Ignoring object updated after sync began: (org-26015)
Ignoring object updated after sync began: (org-26052)
Ignoring object updated after sync began: (org-17918)
Ignoring object updated after sync began: (org-26053)
Fetching & updating all: fac
Updates to be processed: 0
Fetching & updating all: net
Updates to be processed: 18800
Ignoring object updated after sync began: (net-1356)
Ignoring object updated after sync began: (net-3684)
Ignoring object updated after sync began: (net-7924)
Ignoring object updated after sync began: (net-10733)
Ignoring object updated after sync began: (net-13084)
Ignoring object updated after sync began: (net-14581)
Ignoring object updated after sync began: (net-15702)
Traceback (most recent call last):
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/backends/utils.py",
line 84, in _execute
return self.cursor.execute(sql, params)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/backends/mysql/base.py",
line 71, in execute
return self.cursor.execute(query, args)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/MySQLdb/cursors.py",
line 209, in execute
res = self._query(query)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/MySQLdb/cursors.py",
line 315, in _query
db.query(q)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/MySQLdb/connections.py",
line 226, in query
_mysql.connection.query(self, query)
MySQLdb._exceptions.IntegrityError: (1452, 'Cannot add or update a child row: a
foreign key constraint fails (`peeringdb`.`peeringdb_network`, CONSTRAINT
`peeringdb_network_org_id_404d6106_fk_peeringdb_organization_id` FOREIGN KEY
(`org_id`) REFERENCES `peeringdb_organization` (`id`))')
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/bin/peeringdb",
line 8, in <module>
sys.exit(main())
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/peeringdb/cli.py",
line 62, in main
return handler(config=cfg, **vars(options))
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/peeringdb/commands.py",
line 20, in _wrapped
r = func(*a, **k)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/peeringdb/commands.py",
line 219, in handle
client.update_all(rs)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/peeringdb/_update.py",
line 66, in update_all
self._atomic_update(lambda: ctx.sync_resource(r, since=since))
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/peeringdb/_update.py",
line 78, in _atomic_update
sync_func()
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/peeringdb/_update.py",
line 66, in <lambda>
self._atomic_update(lambda: ctx.sync_resource(r, since=since))
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/peeringdb/_tasks_async.py",
line 65, in _wrapped
return loop.run_until_complete(func(*a, **k))
File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py",
line 488, in run_until_complete
return future.result()
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/peeringdb/_tasks_async.py",
line 41, in _wrapped
item = gen.send(r)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/peeringdb/_update.py",
line 274, in sync_row
B.save(obj)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django_peeringdb/client_adaptor/backend.py",
line 148, in save
obj.save()
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/models/base.py",
line 741, in save
force_update=force_update, update_fields=update_fields)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/models/base.py",
line 779, in save_base
force_update, using, update_fields,
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/models/base.py",
line 870, in _save_table
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/models/base.py",
line 908, in _do_insert
using=using, raw=raw)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/models/manager.py",
line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/models/query.py",
line 1186, in _insert
return query.get_compiler(using=using).execute_sql(return_id)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/models/sql/compiler.py",
line 1375, in execute_sql
cursor.execute(sql, params)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/backends/utils.py",
line 67, in execute
return self._execute_with_wrappers(sql, params, many=False,
executor=self._execute)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/backends/utils.py",
line 76, in _execute_with_wrappers
return executor(sql, params, many, context)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/backends/utils.py",
line 84, in _execute
return self.cursor.execute(sql, params)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/utils.py",
line 89, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/backends/utils.py",
line 84, in _execute
return self.cursor.execute(sql, params)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/django/db/backends/mysql/base.py",
line 71, in execute
return self.cursor.execute(query, args)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/MySQLdb/cursors.py",
line 209, in execute
res = self._query(query)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/MySQLdb/cursors.py",
line 315, in _query
db.query(q)
File
"/Users/bdickson1/Documents/projects/site-selection/pdbvenv/lib/python3.6/site-packages/MySQLdb/connections.py",
line 226, in query
_mysql.connection.query(self, query)
django.db.utils.IntegrityError: (1452, 'Cannot add or update a child row: a
foreign key constraint fails (`peeringdb`.`peeringdb_network`, CONSTRAINT
`peeringdb_network_org_id_404d6106_fk_peeringdb_organization_id` FOREIGN KEY
(`org_id`) REFERENCES `peeringdb_organization` (`id`))')
Please let me know if this is a problem on my end, or a problem with the data
in the master db itself...
If there is something I should do to fix this on my end, any advice would be
greatly appreciated.
(If there is any other way to grab a copy of the tables in mysql format, that's
all I'm really trying to get, just a snapshot of the current peeringdb database
to process with some perl scripts I have.)
Thanks in advance,
Brian Dickson
_______________________________________________
Pdb-tech mailing list
[email protected]
https://lists.peeringdb.com/cgi-bin/mailman/listinfo/pdb-tech