RangeError: недопустимое значение: не входит в диапазон 0..1114111: -1

Я пытаюсь изучить акведук, я создал таблицу и попытался прочитать из нее данные. Но когда я набираю cmd aqueduct db upgrade --connect postgres: // postgres: pass @ localhost: 5432 / курсы

эта ошибка показывает: RangeError: недопустимое значение: не входит в диапазон 0..1114111: -1 введите описание изображения здесь


person michal adam    schedule 05.07.2020    source источник


Ответы (2)


Сначала используйте файлы конфигурации в корневом каталоге проекта.

config.yaml

database:
    username: "postgres_user"
    password: "pg_user_pass"
    host: "localhost"
    port: 5432
    databaseName: "pg_db_name"

database.yaml

username: "postgres_user"
password: "pg_user_pass"
host: "localhost"
port: 5432
databaseName: "pg_db_name"

вам также необходимо изменить строку кода в файле substituter.dart, он находится во внешних библиотеках - ›Dart Packages -› postgres - ›src -› substituter.dart, он должен быть в строке 66, но убедитесь, что вы нашли эту строку кода

while (iterator.current != null) {

измените это на

while (iterator.current != null && iterator.current == -1) {

в то время как в корневом каталоге проекта на терминале используйте эту команду для создания файла миграции

flutter pub run aqueduct db generate

теперь перейдите и измените следующие версии на pubspec.yaml

aqueduct: ^4.0.0-b1

а также

aqueduct_test: ^2.0.0-b1

после внесения этих изменений

flutter pub get
flutter pub upgrade
flutter pub run aqueduct db upgrade --database-config ./database.yaml

тогда вы должны вернуться к этим версиям

aqueduct: 3.3.0+1
aqueduct_test: ^1.0.0

запустите снова flutter pub get, а затем вы можете запустить aqueduct serve

person Alban Elshani    schedule 20.07.2020
comment
Это решение не работает, потому что нет инструментов aqueduct 4.0 cli. Это вызовет еще одну ошибку при попытке обновления, потому что aqueduct 4.0 несовместим с cli tool 3.x .. Версия CLI несовместима с версией проекта aqueduct. Установите [email protected] или обновите свой проект до aqueduct3.3.0 + 1. Но когда вы попытаетесь обновить интерфейс командной строки, вы получите следующее: глобальная активация pub зависит от [email protected], который не существует (не удалось найти пакет [email protected] по адресу pub.dartlang.org), определение версии не удалось. - person Konstantin; 04.10.2020
comment
Это решение работало для меня и моей команды в трех операционных системах: Windows 10, Ubuntu 20.04 и MacOS Catalina. Вам, вероятно, пришлось еще немного поработать над конфигурацией вашей ОС, так как у нас не было проблем с установкой инструментов aqueduct 4.0 cli. - person Alban Elshani; 29.10.2020
comment
Это не зависит от ОС. Все остальные реально существующие пакеты скачиваются без проблем. Репозиторий CLI 4.0 не существует. По крайней мере, к тому моменту, когда я его тестировал, я не знаю, существует он сейчас или нет, потому что я перестал использовать акведук. - person Konstantin; 31.10.2020

Я откатил версию PostgreSQL до 10.14. Это стабильно.

И изменил файл pubspec.yaml на этот:

dependencies:
  aqueduct: ^4.0.0-b1

dev_dependencies:
  test: ^1.0.0
  aqueduct_test: ^2.0.0-b1

НО ВАЖНО. Введите команду: pub global activate aqueduct 4.0.0-b1

person Spasibo    schedule 05.10.2020