Я столкнулся с ошибкой SQLSTATE[23000] с кодом 1062, указывающей на повторяющуюся запись «0» для ключа «PRIMARY» при попытке вставить новую запись в таблицу tbl_client_locations в моем приложении PHP. Ошибка возникает при первом запросе выполнения() в функции addNewLocation(), хотя столбец id в таблице установлен в качестве первичного ключа и имеет атрибут AUTO_INCREMENT. Я не могу понять, почему приложение пытается вставить 0 в качестве идентификатора, что нарушает ограничение первичного ключа.
Желаемое поведение, когда я вставляю строку в client_locations с помощью кода или через cli направить серверу, чем он должен вставить строку с идентификатором на 1 больше, чем последний идентификатор.
Проблема — он сохраняет идентификатор как 0 в первичном ключе.
Кратчайший способ репликации — вставить новый столбец через cli напрямую на сервер со всеми полями, кроме id.
function addNewLocation($req) {
try {
print_r($req);
echo " ";
$sql = "INSERT INTO $this->tbl_client_locations (client_id, location_name, created_at, updated_at)
VALUES (:client_id, :location_name, :created_at, :updated_at)";
$this->query($sql);
$this->bind(':client_id', $req['client_id']);
$this->bind(':location_name', trim($req['name']));
$this->bind(':created_at', date('Y-m-d H:i:s'));
$this->bind(':updated_at', date('Y-m-d H:i:s'));
$this->execute(); // Error occurs here
$location_id = $this->lastInsertId();
// Additional code follows...
return $location_id;
} catch (Exception $e) {
// Log detailed exception information
echo "An error occurred while adding the location. Please try again later.";
print_r($e->getMessage());
die;
}
}
Я получаю сообщение об ошибке -
SQLSTATE[23000]: нарушение ограничения целостности: 1062 Повторяющаяся запись '0' для ключа 'PRIMARY'
Код: 23000
Файл: C:\xampp\htdocs\lazymonkey-full-saas-new\api\models\Database.php Строка: 59
Трассировка стека: #0 C:\xampp\htdocs\lazymonkey-full-saas-new\api \models\Database.php(59): PDOStatement->execute()
...
tbl_client_locations has the following relevant columns:
id (Primary Key, AUTO_INCREMENT)
client_id
location_name
created_at
updated_at
Столбец id установлен в базе данных как AUTO_INCREMENT, гарантируя, что база данных автоматически присваивает уникальное значение идентификатору для каждой новой записи.
Я проверил, что столбец id делает это не отображается явно в запросе INSERT, что должно позволить базе данных автоматически назначать значение первичного ключа.
Я получаю ту же ошибку при выполнении запроса непосредственно на сервере mysql.
пример запроса - ВСТАВКА INTO $this->tbl_client_locations (client_id, location_name, созданный_at, обновленный_at)
VALUES
(123, 'Location Alpha', '2024-12-17 10:00:00', '2024-12- 17 10:00:00');
показать результат создания таблицы --
id int(11) NO PRI NULL auto_increment
client_id int(11) YES NULL
location_name varchar(255) YES NULL location_logo varchar(255) YES NULL
location_picture varchar(255) YES NULL
created_at timestamp YES NULL
updated_at timestamp YES NULL
Подробнее здесь: https://stackoverflow.com/questions/792 ... ions-table
Система пытается вставить 0 в качестве первичного ключа в таблицу tbl_client_locations, хотя для столбца id установлено ⇐ Php
Кемеровские программисты php общаются здесь
1734496504
Anonymous
Я столкнулся с ошибкой SQLSTATE[23000] с кодом 1062, указывающей на повторяющуюся запись «0» для ключа «PRIMARY» при попытке вставить новую запись в таблицу tbl_client_locations в моем приложении PHP. Ошибка возникает при первом запросе выполнения() в функции addNewLocation(), хотя столбец id в таблице установлен в качестве первичного ключа и имеет атрибут AUTO_INCREMENT. Я не могу понять, почему приложение пытается вставить 0 в качестве идентификатора, что нарушает ограничение первичного ключа.
Желаемое поведение, когда я вставляю строку в client_locations с помощью кода или через cli направить серверу, чем он должен вставить строку с идентификатором на 1 больше, чем последний идентификатор.
Проблема — он сохраняет идентификатор как 0 в первичном ключе.
Кратчайший способ репликации — вставить новый столбец через cli напрямую на сервер со всеми полями, кроме id.
function addNewLocation($req) {
try {
print_r($req);
echo " ";
$sql = "INSERT INTO $this->tbl_client_locations (client_id, location_name, created_at, updated_at)
VALUES (:client_id, :location_name, :created_at, :updated_at)";
$this->query($sql);
$this->bind(':client_id', $req['client_id']);
$this->bind(':location_name', trim($req['name']));
$this->bind(':created_at', date('Y-m-d H:i:s'));
$this->bind(':updated_at', date('Y-m-d H:i:s'));
$this->execute(); // Error occurs here
$location_id = $this->lastInsertId();
// Additional code follows...
return $location_id;
} catch (Exception $e) {
// Log detailed exception information
echo "An error occurred while adding the location. Please try again later.";
print_r($e->getMessage());
die;
}
}
Я получаю сообщение об ошибке -
SQLSTATE[23000]: нарушение ограничения целостности: 1062 Повторяющаяся запись '0' для ключа 'PRIMARY'
Код: 23000
Файл: C:\xampp\htdocs\lazymonkey-full-saas-new\api\models\Database.php Строка: 59
Трассировка стека: #0 C:\xampp\htdocs\lazymonkey-full-saas-new\api \models\Database.php(59): PDOStatement->execute()
...
tbl_client_locations has the following relevant columns:
id (Primary Key, AUTO_INCREMENT)
client_id
location_name
created_at
updated_at
Столбец id установлен в базе данных как AUTO_INCREMENT, гарантируя, что база данных автоматически присваивает уникальное значение идентификатору для каждой новой записи.
Я проверил, что столбец id делает это не отображается явно в запросе INSERT, что должно позволить базе данных автоматически назначать значение первичного ключа.
Я получаю ту же ошибку при выполнении запроса непосредственно на сервере mysql.
пример запроса - ВСТАВКА INTO $this->tbl_client_locations (client_id, location_name, созданный_at, обновленный_at)
VALUES
(123, 'Location Alpha', '2024-12-17 10:00:00', '2024-12- 17 10:00:00');
показать результат создания таблицы --
id int(11) NO PRI NULL auto_increment
client_id int(11) YES NULL
location_name varchar(255) YES NULL location_logo varchar(255) YES NULL
location_picture varchar(255) YES NULL
created_at timestamp YES NULL
updated_at timestamp YES NULL
Подробнее здесь: [url]https://stackoverflow.com/questions/79286863/system-trying-to-insert-0-as-the-primary-key-in-the-tbl-client-locations-table[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия