الخلية "إنشاء الجدول إن لم يكن موجودا" -> خطأ 1050

StackOverflow https://stackoverflow.com/questions/1650946

  •  22-07-2019
  •  | 
  •  

سؤال

باستخدام الأمر:

CREATE TABLE IF NOT EXISTS `test`.`t1` (
    `col` VARCHAR(16) NOT NULL
) ENGINE=MEMORY;

تشغيل هذا مرتين في MySQL Query Browser النتائج في:

الجدول 't1' بالفعل خطأ 1050

أنا أعتقد أن إنشاء الجدول "إن لم يكن موجودا" لن رمي الأخطاء.أنا في عداد المفقودين شيء أو هذا الخلل ؟ أنا تشغيل الإصدار 5.1.شكرا

هل كانت مفيدة؟

المحلول

يعمل بشكل جيد بالنسبة لي في 5.0.27

أنا مجرد الحصول على تحذير (خطأ) أن الجدول موجود ،

نصائح أخرى

كما سبق ذكره, هذا تحذير وليس خطأ ، ولكن (إن مثلي) تريد الأشياء تشغيل دون تحذيرات ، يمكنك تعطيل هذا التحذير ، ثم إعادة تمكين ذلك مرة أخرى عند الانتهاء.

SET sql_notes = 0;      -- Temporarily disable the "Table already exists" warning
CREATE TABLE IF NOT EXISTS ...
SET sql_notes = 1;      -- And then re-enable the warning again

يمكنك استخدام الاستعلام التالي لإنشاء جدول معين من قاعدة البيانات في الخلية.

create database if not exists `test`;

USE `test`;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

/*Table structure for table `test` */

CREATE TABLE IF NOT EXISTS `tblsample` (

  `id` int(11) NOT NULL auto_increment,   
  `recid` int(11) NOT NULL default '0',       
  `cvfilename` varchar(250)  NOT NULL default '',     
  `cvpagenumber`  int(11) NULL,     
  `cilineno` int(11)  NULL,    
  `batchname`  varchar(100) NOT NULL default '',
  `type` varchar(20) NOT NULL default '',    
  `data` varchar(100) NOT NULL default '',
   PRIMARY KEY  (`id`)

);

لدي حل مشكلة التي قد تنطبق عليك.قاعدة البيانات الخاصة بي في الدولة حيث DROP TABLE فشلت لأنها لم تجد الجدول...ولكن CREATE TABLE كما فشلت لأن الخلية الفكر الطاولة موجودة.(هذه الحالة يمكن بسهولة الفوضى مع الخاص بك إذا لم يوجد شرط).

لقد وجدت في نهاية المطاف هذا الحل:

sudo mysqladmin flush-tables

بالنسبة لي, دون sudo, لدي الخطأ التالية:

mysqladmin: refresh failed; error: 'Access denied; you need the RELOAD privilege for this operation'

(يعمل على نظام التشغيل OS X 10.6)

create database if not exists `test`;

USE `test`;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

/*Table structure for table `test` */

***CREATE TABLE IF NOT EXISTS `tblsample` (
  `id` int(11) NOT NULL auto_increment,   
  `recid` int(11) NOT NULL default '0',       
  `cvfilename` varchar(250)  NOT NULL default '',     
  `cvpagenumber`  int(11) NULL,     
  `cilineno` int(11)  NULL,    
  `batchname`  varchar(100) NOT NULL default '',
  `type` varchar(20) NOT NULL default '',    
  `data` varchar(100) NOT NULL default '',
   PRIMARY KEY  (`id`)
);***

كان لي مشكلة مماثلة كما @CraigWalker على دبيان:قاعدة البيانات الخاصة بي في الدولة حيث DROP TABLE فشلت لأنها لم تجد الجدول ، ولكن CREATE TABLE كما فشلت لأن الخلية الفكر الطاولة لا تزال موجودة.حتى طاولة مكسورة لا تزال موجودة في مكان ما على الرغم من أنه لم يكن هناك عندما نظرت بريس.

أنا خلقت هذه الدولة مجرد نسخ المجلد بأكمله الذي يحتوي على قاعدة البيانات مع بعض MyISAM وبعض InnoDB الجداول

cp -a /var/lib/mysql/sometable /var/lib/mysql/test

(لا ينصح بذلك!)

جميع الجداول ك InnoDB حيث لا مرئية في قاعدة البيانات الجديدة test في phpmyadmin.

sudo mysqladmin flush-tables لم يساعدنا أيضا.

الحل: واضطررت الى حذف اختبار جديد مع قاعدة البيانات drop database test ثم نسخ مع mysqldump بدلا من ذلك:

mysqldump somedatabase -u username -p -r export.sql
mysql test -u username -p < export.sql

إذا كان أي شخص الحصول على هذا الخطأ بعد بريس التصدير باستخدام خيارات مخصصة مضيفا "قطرة" جداول بيانات مسح هذا الحق.

إنشاء اتصال الخلية مع المعلمة التالية."'raise_on_warnings':كاذبة".فإنه سيتم تجاهل هذا التحذير.على سبيل المثال

config = {'user': 'user','password': 'passwd','host': 'localhost','database': 'db',   'raise_on_warnings': False,}
cnx = mysql.connector.connect(**config)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top