Не установлены драйвера баз данных sqlite mysql или postgresql
Некоторое время я занимался локальными разработками и сейчас продвигаю все в продакшн. Конечно, я также добавлял данные на сервер разработки, не думая, что я не перенастроил его на Postgres.
Теперь у меня есть база данных SQLite, информация о которой мне нужна для удаленного VPS в базе данных Postgres.
Я пробовал выполнить дамп в файл .sql, но получаю много жалоб на синтаксис от Postgres. Как лучше всего это сделать?
3 ответа
Для практически любого преобразования между двумя базами данных есть следующие варианты:
Сделайте дамп только схемы из исходной базы данных. Преобразуйте его вручную и загрузите в целевую базу данных. Затем сделайте дамп только данных из исходной БД в наиболее совместимой форме дампа SQL, которую он предлагает. Попробуйте загрузить это в целевую БД. При возникновении проблем выполните преобразование сценария в дамп с помощью sed / awk / perl / something и повторите попытку. Повторяйте, пока он не загрузится и результаты не совпадут.
Как и в (1), сконвертируйте схему вручную. Затем напишите сценарий на предпочитаемом вами языке, который подключается к обеим базам данных, выбирает SELECT из одной и INSERTs в другую, возможно, с некоторыми преобразованиями типов данных и представлений.
Используйте инструмент ETL, например Talend или Pentaho, для подключения к обеим базам данных и преобразования между ними. Инструменты ETL похожи на версию (2) «это уже написал кто-то другой», но они могут потребовать некоторого обучения.
Надеюсь, что вы также найдете заранее написанное преобразование. Один на Heroku под названием sequel , который будет работать для SQLite -> PostgreSQL; доступен ли он без Heroku и может ли он работать без остальной инфраструктуры и кода Heroku?
После любого из них обычно требуются некоторые шаги после передачи, такие как использование setval() для инициализации последовательностей.
Инструмент преобразования базы данных Heroku называется sequel . Вот необходимые рубиновые камни:
Затем это сработало для меня для файла базы данных sqlite с именем tweets.db в текущем рабочем каталоге:
PostgreSQL поддерживает «обертки сторонних данных», которые позволяют напрямую обращаться к любому источнику данных через БД, включая sqlite. Даже до автоматического импорта схемы. Затем вы можете использовать create table localtbl as (select * from remotetbl) для переноса данных в фактическое хранилище PG.
Nextcloud — это платформа для обмена файлами и совместной работы с открытым исходным кодом, аналогичная Dropbox. Он поставляется в комплекте с медиаплеером, календарем и управлением контактами.
Nextcloud расширяется с помощью приложений и имеет настольные и мобильные клиенты для всех основных платформ.
В этом руководстве мы покажем вам, как установить и настроить Nextcloud с Apache на машине Ubuntu 18.04.
Подготовка
Перед тем, как начать работу с руководством, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo .
Шаг 1. Создание базы данных MySQL
NextCloud может использовать базу данных SQLite, PostgreSQL или MySQL для хранения всех своих данных. В этом руководстве мы будем использовать MySQL в качестве предпочтительной базы данных.
Если на вашем сервере Ubuntu не установлены MySQL или MariaDB, вы можете установить его, следуя одной из следующих инструкций:
Чтобы создать базу данных и пользователя, сначала войдите в оболочку MySQL, набрав следующую команду:
Выполните следующие операторы SQL, чтобы создать базу данных с именем nextcloud , пользователем с именем nextclouduser и предоставить пользователю все необходимые разрешения :
Шаг 2: установка PHP и Apache
Nextcloud — это приложение PHP. PHP 7.2, который является версией PHP по умолчанию в Ubuntu 18.04, полностью поддерживается и рекомендуется для Nextcloud.
Выполните следующую команду, чтобы установить Apache , PHP и все необходимые расширения PHP и:
Шаг 3. Настройка брандмауэра
Шаг 4: загрузка Nextcloud
На момент написания этой статьи последней стабильной версией Nextcloud была версия 15.0.0. Прежде чем перейти к следующему шагу, посетите страницу загрузки Nextcloud и проверьте, доступна ли новая версия Nextcloud.
Начните с загрузки последней версии Nextcloud, используя следующую команду wget :
После завершения загрузки распакуйте архив в каталог / var / www:
Установите правильного владельца, чтобы веб-сервер Apache мог иметь полный доступ к файлам и каталогам Nextcloud.
Шаг 5. Настройте Apache
Откройте текстовый редактор и создайте следующий файл конфигурации Apache.
Включите недавно добавленную конфигурацию и все необходимые модули Apache с помощью:
Активируйте изменения, перезапустив службу Apache:
Шаг 6: установка Nextcloud
Теперь, когда Nextcloud загружен и все необходимые службы настроены, откройте браузер и запустите установку Nextcloud, посетив доменное имя или IP-адрес вашего сервера, а затем /nextcloud :
Вам будет представлена страница настройки Nextcloud.
Введите желаемое имя пользователя и пароль администратора, а также данные пользователя и базы данных MySQL, которые вы создали ранее.
Выводы
Вы узнали, как установить и настроить Nextcloud на вашем компьютере с Ubuntu 18.04. Если у вас есть доменное имя, связанное с вашим сервером Nextcloud, вы можете следовать этому руководству и защитить свой Apache с помощью Let's Encrypt .
Чтобы найти дополнительную информацию о том, как управлять своим экземпляром Nextcloud, посетите страницу документации Nextcloud .
Я надеюсь, что кто-то может помочь мне. Я работаю над простым приложением, которое подключается к базе данных SQLite. Ниже приведен мой код:
Это просто окно для загрузки имени пользователя и пароля в базу данных. Проблема в том, что при нажатии на кнопку появляется следующее исключение:
(Я нашел пример о том, как подключиться к базе данных SQLite в Java, пример, который я нашел работает хорошо)
в пути к классам отсутствуют jar(ы), содержащие классы sqlite и драйвер. Вам нужно что-то вроде sqlite-jdbc-3.7.2.jar или ваша применимая версия.
Если вы уверены, что jar есть, попробуйте добавить эту строку кода перед созданием соединения:
У меня такая же проблема. Я использовал maven и добавил зависимость:
Он может быть скомпилирован, и я получил:
не найден подходящий драйвер для jdbc:sqlite:xx.db
Я проверил путь к классам, и я был уверен, что sqlite-jdbc-3.15.1.Джар был там. Я думаю, что по какой-то причине класс не был загружен, я не знаю, почему. поэтому я добавил
класса.forName ("org.базы данных SQLite.JDBC");
в начале моего кода. Он работал!
и , Я удаляю строку выше. Он все еще работает! Я очистил проект и перестроил его, больше никакого класса.forName() необходим. Я до сих пор не знаю, почему. Но проблема решена. Думаю, класс.forName () может использоваться для диагностики, если необходимый класс находится в пути к классам.
есть что-то большее, чем просто класс.forName.
вы должны использовать:
" jdbc:sqlite: "будет сделать трюк.
Если вы используете Linux, просто измените символ разделителя: DriverManager.метод getconnection("JDBC в:данных SQLite:/ваш/somepath/мой-дБ.данных SQLite").
строка " класс.forName ("org.базы данных SQLite.JDBC"); " работает, потому что он создает экземпляр JDBC, который запускает статический блок класса JDBC:
вместо добавления класса.forname (), упомянутый выше, вы должны напрямую использовать эту строку, которая имеет тот же эффект и которая более элегантна (потому что вы не создаете экземпляр JDBC бесплатно):
Если вы используете Maven и хотите создать исполняемый jar, вы можете решить импортировать содержимое jar sqlite в свой собственный jar:
вам не нужно будет добавлять определенный путь к классам или неявное использование, как предложено в других ответах.
я столкнулся с аналогичными проблемами, используя простую конфигурацию gradle следующим образом
позже я обнаружил, что Gradle build создавал jar, который не включал никаких внешних зависимостей. Следующая конфигурация должна использоваться для включения всех ваших зависимых библиотек в результирующий файл jar вместе с исходными файлами для создания fat-jar:
мне трудно понять, как я должен устанавливать драйвер JDBC для PostgreSQL на моем сервере debian 6.0. Я перевез водителя .jar в следующий каталог:
тогда учебники говорят об использовании этого кода:
однако, поскольку я новичок в postgreSQL, я понятия не имею, где я должен ставить эту строку, или если это даже правильно.
мой вопрос, за исключением перемещения файла jar в это место, что мне делать на самом деле нужно сделать, чтобы установить драйвер JDBC на мою установку postgreSQL?
EDIT: это моя настройка:
сервер 1: Tomcat + SOLR
сервер 2: PostgreSQL с драйвером JDBC
SOLR на сервере 1 запрашивает postgreSQL на сервере 2 через драйвер JDBC
лучше всего установить драйвер PostgreSQL в папку tomcat\lib. Просто скопируйте jar драйвера в PATH_TO_TOMCAT\lib
Не рекомендуется добавлять вещи в системный путь к классам, потому что вы можете закончить в классе loader hell. Вот пример того, как вы оказываетесь в аду jar / classpath.
- предположим, что текущее приложение использует postgres 9.1, и вы устанавливаете драйвер на системном пути к классам
- вы решили запустить другое приложение на этом поле, который говорит с новая версия Постгреса, допустим, версия 9.2
- поскольку вы используете приложение system classpath 2 в конечном итоге будет использовать старый драйвер, потому что системный classpath имеет тенденцию иметь приоритет над classpath приложений, если сценарий запуска приложения не устанавливает CLASSPATH="", чтобы очистить системный classpath или использует пользовательский загрузчик классов, который не выполняет загрузку родительского первого класса.
этот драйвер должен быть на вашем пути к классам. Вы можете использовать эту команду
или вы можете скопировать библиотеку в структуру проекта.
затем вы можете создавать соединения, как говорят учебники.
в вашей IDE (Idea, Eclipse и т. д.) Вам нужно добавить этот путь в качестве библиотеки.
кроме того, вы можете компилировать и выполнять из командной строки, Если вы определяете переменную CLASSPATH, которая включает это.
установить все пакеты:
чтобы установить среду Java для всех пользователей, добавьте / отредактируйте/etc / environment:
Примечание: если вы предпочитаете использовать postgresql-jdbc3, замените /usr/share/java/postgresql-jdbc4.jar с /usr / share / java / postgresql.Джар
проверьте соединение с помощью этого кода:
Примечание: изменение базы данных, пользователя и passwrod с вашей конфигурацией
Я надеюсь, что кто-то может помочь мне. Я работаю над простым приложением, которое подключается к базе данных SQLite. Ниже приведен мой код подключения:
Это просто окно для загрузки имени пользователя и пароля в базу данных. У меня проблема в том, что когда я нажимаю на кнопку, появляется следующее исключение:
(Я нашел пример того, как подключиться к базе данных SQLite на Java, пример, который я нашел, работает хорошо)
В вашем пути к классам отсутствуют банки, содержащие классы и драйвер sqlite. Вам понадобится что-то вроде sqlite-jdbc-3.7.2.jar или подходящей вам версии.
Если вы уверены, что банка есть, попробуйте добавить эту строку кода, прежде чем создавать соединение:
Я столкнулся с аналогичными проблемами, используя простую конфигурацию Gradle следующим образом
Позже я обнаружил, что сборка gradle создавала банку, которая не включала никаких внешних зависимостей. Следующая конфигурация должна использоваться для включения всех ваших зависимых библиотек в результирующий файл jar вместе с вашими исходными файлами для создания fat-jar:
Ниже приведена ссылка на центральный репозиторий, откуда вы можете скачать последние файлы драйверов.
Убедитесь, что вы загружаете файл sqlite-jdbc-version.jar , а не другие файлы. Надеюсь, это поможет
Если вы используете Maven и хотите создать исполняемый файл jar, вы можете решить импортировать содержимое sqlite jar в свой собственный созданный jar:
Вам не нужно будет добавлять конкретный путь к классам или неявное использование, как предлагается в других ответах.
Есть нечто большее, чем просто Class.forName.
Вам следует использовать:
«Jdbc: sqlite:» сделает свое дело.
Если вы используете Linux, просто измените символ разделителя: DriverManager.getConnection ("jdbc: sqlite: /your/somepath/my-db.sqlite").
У меня та же проблема. Я использовал maven и добавил зависимость:
Его можно было скомпилировать, и я получил:
Не найдено подходящего драйвера для jdbc: sqlite: xx.db
Я проверил путь к классам и был уверен, что там есть sqlite-jdbc-3.15.1.jar. Я предполагаю, что по какой-то причине класс не загрузился, не знаю почему. поэтому я добавил
В начале моего кода. Это сработало!
И я удаляю строку выше. Это все еще работает! Я очистил проект и пересобирал его, Class.forName () больше не нужен . Я до сих пор не знаю почему. Но проблема решена. Я думаю, что Class.forName () можно использовать для диагностики, находится ли нужный вам класс в пути к классам.
Читайте также: