Nette database a sqlite3 – Trying to access array offset on value of type null

ondrej256
Člen | 187
+
0
-

Ahoj,

importuju velké soubory a nejdřív si je uložím do sqlite a následně to zpracuju a importuju do mysql.

Při importu do sqlite3 dostávám následující chybu: Trying to access array offset on value of type null

viz screen: https://ctrlv.cz/ANB9

používám nette/database: v2.4.11
sqlite3 verze: 3.27.2

Vydumpoval jsem si před řádkem 229 $keys[$row[‚id‘]] a je tam tohle:

{
  "name": 0,
  "local": "key",
  "table": "cache",
  "foreign": null,
  "onDelete": "CASCADE",
  "onUpdate": "NO ACTION"
}

Nesetkali jste se s tím někdo? Kolegovi na OS X to funguje, kdežto mě na Linuxu to takhle padá.

Po úpravě mě import proběhl v pořádku dokonce

	public function getForeignKeys($table)
	{
		$keys = [];
		foreach ($this->connection->query("PRAGMA foreign_key_list({$this->delimite($table)})") as $row) {
			$keys[$row['id']]['name'] = $row['id']; // foreign key name
			$keys[$row['id']]['local'] = $row['from']; // local columns
			$keys[$row['id']]['table'] = $row['table']; // referenced table
			$keys[$row['id']]['foreign'] = $row['to']; // referenced columns
			$keys[$row['id']]['onDelete'] = $row['on_delete'];
			$keys[$row['id']]['onUpdate'] = $row['on_update'];

			// if ($keys[$row['id']]['foreign'][0] == null) { TOHLE JE PUVODNI RADEK
			if (!isset($keys[$row['id']]['foreign'][0]) || $keys[$row['id']]['foreign'][0] == null) {
				$keys[$row['id']]['foreign'] = null;
			}
		}
		return array_values($keys);
	}

Vytvořil jsem pull request: https://github.com/…ase/pull/293

Editoval ondrej256 (28. 10. 2022 8:07)