SQLSTATE[HY000]: General error: 3734 Failed to add the foreign key constraint. Missing column 'id' for constraint 'posts_user_id_foreign' in the referenced table 'users' (SQL: alter table `posts` add constraint `posts_user_id_foreign` foreign key (`user_id`) references `users` (`id`))
at D:multimedia-projects-main (1)multimedia-projects-mainjobsearchvendorlaravelframeworksrcIlluminateDatabaseConnection.php:761
757▕ // If an exception occurs when attempting to run a query, we'll format the error
758▕ // message to include the bindings with SQL, which will make this exception a
759▕ // lot more helpful to the developer instead of just the database's errors.
760▕ catch (Exception $e) {
➜ 761▕ throw new QueryException(
762▕ $query, $this->prepareBindings($bindings), $e
763▕ );
764▕ }
765▕ }
1 D:multimedia-projects-main (1)multimedia-projects-mainjobsearchvendorlaravelframeworksrcIlluminateDatabaseConnection.php:546
PDOException::("SQLSTATE[HY000]: General error: 3734 Failed to add the foreign key constraint. Missing column 'id' for constraint 'posts_user_id_foreign' in the referenced table 'users'")
2 D:multimedia-projects-main (1)multimedia-projects-mainjobsearchvendorlaravelframeworksrcIlluminateDatabaseConnection.php:546
PDOStatement::execute()
my code look like this for the foreign
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id('post_id')->unique()->nullable(false);
$table->biginteger('user_id')->unasigned()->index();
$table->biginteger('company_id')->unasigned()->index();
$table->biginteger('job_id')->unasigned()->index();
$table->timestamps();
});
Schema::table('posts', function($table) {
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('company_id')->references('id')->on('companies');
$table->foreign('job_id')->references('id')->on('jobs');
});
}
this is for the user
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id('user_id');
$table->string('name');
$table->string('email')->unique();
$table->foreignid('companyid');
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
the rest is similar
already try to change the foreign key into big integer and to integer already try to change the name of the foreign reference but still not working
Getting error 3734, failed to add foreign key constraint (New to SQL)
Hi there sorry if this is a stupid question but I’m new to sql, getting the error 3734
CREATE TABLE orderDetails ( orderNumber INT (10) NOT NULL, quantityOrdered int(10) NOT NULL, priceEach decimal (10,2) NOT NULL, orderLineNumber INT (10) NOT NULL, productCode VARCHAR(100) NOT NULL, PRIMARY KEY (orderNumber), KEY productCode (productCode), CONSTRAINT orderdetails_asdf_1 FOREIGN KEY (productCode) REFERENCES product (productCode) ON UPDATE CASCADE ); CREATE TABLE product ( productCode VARCHAR(100) NOT NULL, orderNumber INT NOT NULL, orderDate DATE NOT NULL, requiredDate DATE NOT NULL, shippedDate DATE NOT NULL, orderStatus varchar(10) NOT NULL, Comments VARCHAR(100) NOT NULL, customerNumber INT NOT NULL, PRIMARY KEY (orderNumber), KEY productCode (productCode), CONSTRAINT orderdetails_asdf_1 FOREIGN KEY (productCode) REFERENCES orderDetails (productCode) ON UPDATE CASCADE ) ;
Error code 3734, Failed to add the foreign key constraint. Missing column productCode for constraint orderDetails_asdf_1 in the referenced table ‘product’
#mysql
#mysql
Вопрос:
Работаю над небольшой базой данных, собирающей новые версии в разных странах. Все работало нормально, пока я не изменил название Country на countryRel . он начал выдавать этот код ошибки Код ошибки: 3734.
Я уже перепробовал большинство других онлайн-справок, которые я могу найти (например, сделать первичный ключ уникальным), а также возился с переменными (добавляя новые или удаляя их, чтобы увидеть, что изменилось, обычно это просто выдает эту ошибку Код ошибки: 1822) Я поместил свой кодвозвращаясь к тому, как я хочу, я бы в основном хотел, чтобы это осталось. есть идеи?
create table countries ( counId int unique, countryName varchar(15), primary key(counId));
insert into countries Values (1, 'Japan'),(2, 'America'),(3,'England'),(4,'Germany'),(5,'Canada'),(6,'China');
select * from countries;
drop table countryRel;
create table countryRel (novelId int, counId int, releaseDate date, foreign key(novelId) references
Lightnovel(novelId), foreign key(counId) references countries(counId));
insert into countryRel values (1, 1, '2019-1-17'),(2, 1, '2019-1-17'),(3, 1, '2019-5-17'),(4, 1, '2019-1-17'),
(5, 1, '2019-1-17'),(6, 1, '2019-1-01'),(7, 1, '2019-1-01'),(8, 1, '2019-2-09'),(9, 1, '2019-2-09'),(1, 2, '2019-9-17'),
(2, 2, '2019-9-20'),(3, 2, '2019-10-10'),(4, 2, '2019-11-21'),(5, 2, '2019-8-04'),(6, 2, '2019-08-04'),
(7, 2, '2019-1-01'),(8, 2, '2019-11-21'),(9, 2, '2019-9-14'),(1, 3, '2019-9-17'),(2, 3, '2019-9-20'),
(3, 3, '2019-10-10'),(4, 3, '2019-11-21'),(5, 3, '2019-8-04'),(6, 3, '2019-08-04'),(7, 3, '2019-1-01'),
(8, 3, '2019-11-21'),(9, 3, '2019-9-14');
Это должно создать небольшой список таблиц из 1-6 перечисленных стран. Затем, используя counId в качестве основного модуля, передайте его в CountryRel для использования в перечисленных таблицах.
Комментарии:
1. Вам необходимо создать
Lightnovel
таблицу, прежде чем вы сможете создатьcountryRel
таблицу dbfiddle.uk /…2. мой плохой, я поделился только тем, что было подходящим кодом, у меня есть таблица lightnovel, и я не чувствовал, что это поможет в этом обсуждении.
3. здесь: создайте таблицу Lightnovel (authId int, novelId int, ТЕКСТ заголовка, ТЕКСТ описания, издатель varchar(45), дата выпуска, первичный ключ (novelId), внешний ключ (authId) ссылается на автора (authId));
4. Это не помогает, поскольку ссылается на другую таблицу
author
, для которой вы не дали определения. Мы не сможем помочь вам решить вашу проблему, если вы не предоставите нам всю необходимую информацию.5. создайте таблицу author(authId int, FirstName varchar(30), LastName varchar(30), nationality varchar(15), дата первого выпуска, booknum int, первичный ключ (authId));
Ответ №1:
Я проверил и обнаружил, что вы добавляете 2 внешних ключа, но вы не отправили определение таблицы для второго (Lightnovel), если я удаляю этот сценарий внешнего ключа, он работает нормально. Пожалуйста, добавьте таблицу Lightnovel, тогда все будет работать нормально.
Комментарии:
1. все еще пытаюсь найти лучший способ использовать систему комментариев переполнения стека (с двумя из них) вот моя таблица, я не добавил ее в эту тему, потому что я не чувствовал, что это уместно для обсуждения (моя ошибка): here: create table Lightnovel (authId int, novelId int, titleТЕКСТ, описание ТЕКСТА, издатель varchar(45), дата выпуска, первичный ключ (novelId), внешний ключ (authId) ссылается на автора (authId));
Я работаю над MySQL WorkBench и все время получаю код ошибки 3734: не удалось добавить ограничение внешнего ключа. Что означает эта ошибка и могу ли я исправить эту ошибку? Я все время получаю ошибку с таблицей бронирования вилл.
create table Reservation
(
ReservationID char(5) primary key,
ReservationDate date,
CustomerID char(5),
foreign key (CustomerID) references Customer (CustomerID)
);
create table Villa
(
VillaID char(5) primary key,
VillaName varchar(40),
VillaCostPerDay int(3),
VillaTypeID char(5),
foreign key (VillaTypeID) references VillaType (VillaTypeID)
);
``create table VillaReservation
(
VillaReservationID char(5),
VillaID char(5),
DateFrom datetime,
DateTo datetime,
primary key (VillaReservationID, VillaID),
foreign key (VillaReservationID) references Reservation(VillaReservationID),
foreign key (VillaID) references Villa(VillaID)
);
Comments
nwcm
mentioned this issue
Feb 17, 2023
3 tasks
nwcm
added a commit
to nwcm/liquibase
that referenced
this issue
Feb 20, 2023
nwcm
mentioned this issue
Feb 20, 2023
3 tasks
nwcm
added a commit
to nwcm/liquibase
that referenced
this issue
Feb 20, 2023
nwcm
added a commit
to nwcm/liquibase
that referenced
this issue
Feb 21, 2023
FBurguer
linked a pull request
Feb 28, 2023
that will
close
this issue
3 tasks
filipelautert
pushed a commit
that referenced
this issue
Mar 17, 2023
* fix MySQL ENUM and SET bug #3734 * - ENUM integration test added for MySQL - CommandUtil class created with different command methods to keep them in a single place * - Generate changelog tests updated to make use of a command util class - Command util refactoring with latest command step framework udpates --------- Co-authored-by: Daniel Mallorga <dmallorga@liquibase.com>