Table already exists как решить
Перейти к содержимому

Table already exists как решить

  • автор:

Форум пользователей MySQL

Доброго времени суток. У меня есть скрипт создающий 3 временные таблицы. Все работае корректно, НО если быстро нажимть f5 вылезает ошибка 1050 Table already exists. Есть ли какое-нибудь решение для этой проблемы?

#2 24.10.2012 14:49:18

vasya Архат Откуда: Орел Зарегистрирован: 07.03.2007 Сообщений: 5831

Re: 1050 Table already exists

Править скрипт — проверять наличие временной таблицы.

Страниц: 1

  • Список
  • » Программирование в MySQL
  • » 1050 Table already exists

Форум пользователей MySQL

В качестве рабочего предположения — уже есть файлик на диске.
Например, создается табличка MyISAM — уже есть файлик MYD,
но нет файла frm. В результате в списке таблицы нет, но и создать
не удается. Если создается табличка InnoDB — она описана в прост-
ранстве имен InnoDB, но файлик frm удален. Тогда можно создать
файлик frm с нужной структурой, выполнить DROP TABLE (удалится
файлик и запись в пространстве InnoDB, и всё заработает.

Ошибка sqlite3 table sqlitedb_developers already exists

Ввиду того, что я новичок в sqlite, я не понимаю, что было сделано не так. Помогите мне разобраться в этом. Может я что-то не то скачал? P.S. код с сайта https://pythonru.com/biblioteki/vvedenie-v-sqlite-python. Учусь по нему.

Отслеживать
задан 3 авг 2022 в 9:44
427 4 4 серебряных знака 17 17 бронзовых знаков
CREATE TABLE IF NOT EXISTS sqlitedb_developers
3 авг 2022 в 9:47

Ну наверное вы уже запускали этот скрипт и таблица уже была создана. Второй раз ту же таблицу нельзя уже создать.

3 авг 2022 в 9:47

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

В sqlite нет типа datetime вместо него используется тип text. Соответственно нет и инструментов для работы с подобными данными. В связи с этим (на будущее) рекомендую использовать либо данные даты времени записанные в формат
ISO YYYY-mm-dd HH:MM:SS ( datetime.isoformat() в python) в виде типа text для sqlite
либо timestamp ( datetime.timestamp() в python) в виде real для sqlite

Ссылка на инфо

import sqlite3 # здесь не может возникнуть ошибки, # поскольку если этого файла нет, # обработчик его создаст conn = sqlite3.connect('sqlite_python.db') sqlite_create_table_query = """ CREATE TABLE -- добавление `if not exists` исключает -- попытку создания таблицы если она уже существует -- соответственно делая не нужным весь блок `try` if not exists developers ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, email text NOT NULL UNIQUE, -- вот про это место я писал выше, -- у Вас здесь тип datetime joining_date text, salary REAL NOT NULL ); """ conn.execute( sqlite_create_table_query ) conn.close() 

SQLiteException: table already exists

My second table works fine. i tried to uninstall my app and install it and it wont work, maybe there is a limit of tables in DB? Here is my onCreate code:

@Override public void onCreate(SQLiteDatabase db) < db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_DATE + " TEXT, " + COLUMN_EXERCISE + " TEXT, " + COLUMN_WEIGHT + " TEXT, " + COLUMN_REPS + " TEXT, " + COLUMN_SET_TIME + " TEXT, " + COLUMN_WORKOUT_TIME + " TEXT, " + COLUMN_DISTANCE + " TEXT, " + COLUMN_SPEED + " TEXT, " + COLUMN_REST_TIME + " TEXT, " + COLUMN_NUMBER_OF_SETS + " TEXT, " + COLUMN_FIELDS_PARAMETER + " TEXT, " + COLUMN_NOT_ON_LIST_EXERCISE + " TEXT, " + COLUMN_HERAT_BEAT + " TEXT, " + COLUMN_CALORIES + " TEXT, " + COLUMN_COMMENT + " TEXT);"); db.execSQL("CREATE TABLE " + SECOND_TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_AGE + " TEXT, " + COLUMN_AGE_PW + " TEXT, " + COLUMN_GENDER + " TEXT, " + COLUMN_HEIGHT + " TEXT, " + COLUMN_HEIGHT_PW + " TEXT, " + COLUMN_BODY_WEIGHT + " TEXT, " + COLUMN_BODY_WEIGHT_PW + " TEXT, " + COLUMN_PROFILE_PIC + " TEXT, " + COLUMN_FAT + " TEXT, " + COLUMN_FAT_PW + " TEXT);"); db.execSQL("CREATE TABLE " + MEDIA_TABLE + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_PICS + " TEXT, " + COLUMN_VIDEO + " TEXT);"); >@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) < db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + SECOND_TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + MEDIA_TABLE); onCreate(db); >EDIT : @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

11.3k 2 2 gold badges 39 39 silver badges 48 48 bronze badges
asked May 15, 2013 at 18:02
389 2 2 gold badges 7 7 silver badges 16 16 bronze badges

3 Answers 3

You should use CREATE TABLE IF NOT EXISTS instead of CREATE TABLE . Your code would then look like this:

@Override public void onCreate(SQLiteDatabase db) < db.execSQL("CREATE TABLE IF NOT EXISTS" + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_DATE + " TEXT, " + COLUMN_EXERCISE + " TEXT, " + COLUMN_WEIGHT + " TEXT, " + COLUMN_REPS + " TEXT, " + COLUMN_SET_TIME + " TEXT, " + COLUMN_WORKOUT_TIME + " TEXT, " + COLUMN_DISTANCE + " TEXT, " + COLUMN_SPEED + " TEXT, " + COLUMN_REST_TIME + " TEXT, " + COLUMN_NUMBER_OF_SETS + " TEXT, " + COLUMN_FIELDS_PARAMETER + " TEXT, " + COLUMN_NOT_ON_LIST_EXERCISE + " TEXT, " + COLUMN_HERAT_BEAT + " TEXT, " + COLUMN_CALORIES + " TEXT, " + COLUMN_COMMENT + " TEXT);"); db.execSQL("CREATE TABLE IF NOT EXISTS" + SECOND_TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_AGE + " TEXT, " + COLUMN_AGE_PW + " TEXT, " + COLUMN_GENDER + " TEXT, " + COLUMN_HEIGHT + " TEXT, " + COLUMN_HEIGHT_PW + " TEXT, " + COLUMN_BODY_WEIGHT + " TEXT, " + COLUMN_BODY_WEIGHT_PW + " TEXT, " + COLUMN_PROFILE_PIC + " TEXT, " + COLUMN_FAT + " TEXT, " + COLUMN_FAT_PW + " TEXT);"); db.execSQL("CREATE TABLE IF NOT EXISTS" + MEDIA_TABLE + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_PICS + " TEXT, " + COLUMN_VIDEO + " TEXT);"); >@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *