-2

MySQL Workbench を使用していて、列名を変更しようとしています。列は多くの外部キーの一部です。

それがエラーの原因だと思います。に改名しようとしstrCustomerCodeています。strCustomerCodeNEW

コード:

ALTER TABLE `Check4It_MainDB`.`tbl_000_010_MAIN_REPORT_INFO` 
CHANGE COLUMN `strCustomerCode` `strCustomerCodeNEW` VARCHAR(255) 
    CHARACTER SET 'utf8' NOT NULL ;

エラーは次のとおりです。

エラー 1025: './Check4It_MainDB/#sql-b6a_4a5' から './Check4It_MainDB/tbl_000_010_MAIN_REPORT_INFO' への名前変更エラー (errno: 150)

SQL ステートメント:

ALTER TABLE `Check4It_MainDB`.`tbl_000_010_MAIN_REPORT_INFO` 
CHANGE COLUMN `strCustomerCode` `strCustomerCodeNEW` VARCHAR(255) 
    CHARACTER SET 'utf8' NOT NULL

エラー: フェイルバック スクリプトの実行中にエラーが発生しました。詳細は
「エラー 1046: データベースが選択されていません」の後に続きます

SQL ステートメント:

CREATE TABLE `tbl_000_010_MAIN_REPORT_INFO` (
    `strCustomerCode` varchar(255) CHARACTER SET utf8 NOT NULL'
    `strPasscodeAdmin` varchar(255) CHARACTER SET utf8 NOT NULL,
    `strPasscodeClient` varchar(255) CHARACTER SET utf8 NOT NULL,
    `idMainReport_ID` int(11) NOT NULL AUTO_INCREMENT,
    `lngProcedure_ID` int(11) DEFAULT NULL,
    `strHardDriveID` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
    `lngInspector_01_ID` int(11) DEFAULT NULL,
    `lngInspector_02_ID` int(11) DEFAULT NULL,
    `lngShift_ID` int(11) DEFAULT NULL,
    `lngUnit_ID` int(11) DEFAULT NULL,
    `dtmReportCreated` datetime DEFAULT NULL,
    `dtmReportSubmitted` datetime DEFAULT NULL,
    `bolCompleted` bit(1) DEFAULT b'0',
    `memReportComments` longtext CHARACTER SET utf8,
    `strTextMessage` varchar(160) CHARACTER SET utf8 DEFAULT NULL,
    `bolTextMessageOn` bit(1) DEFAULT b'0',
    `bolTextSent` bit(1) DEFAULT b'0',
    `bolReportEmailSent` bit(1) DEFAULT b'0',
    `bolCompletionEmailSent` bit(1) DEFAULT b'0',
    `bolReportPostedToCloud` bit(1) DEFAULT b'0',
    `strComputerName` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
    `strUserLogin` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
    `strUserVersionNUmber` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
    `bolImportedReport` bit(1) DEFAULT NULL,
    `bolTestReport` bit(1) DEFAULT b'0',
    `strOSVersion` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
    `strWindowsVersion` varchar(255) CHARACTER SET utf8 DEFAULT NULL,

PRIMARY KEY (`idMainReport_ID`, `strCustomerCode`, `strPasscodeAdmin`, `strPasscodeClient`),

KEY `idMainTest_ID1` (`lngProcedure_ID`),
KEY `idProcedure_ID` (`idMainReport_ID`),
KEY `lngMemebrInfoID` (`lngInspector_01_ID`),
KEY `lngShift_ID` (`lngShift_ID`),
KEY `lngUnit_ID` (`lngUnit_ID`),
KEY `strHardDriveID` (`strHardDriveID`),
KEY `strPasscodeClient` (`strPasscodeClient`),
KEY `tbl_000_010_MAIN_REPORT_INFOstrPasscodeAdmin` (`strPasscodeAdmin`),
KEY `tblREF_InspectorInfotbl_000_010_MAIN_REPORT_INFO` (`lngInspector_01_ID`,`strCustomerCode`),
KEY `strPasscodeAdmin` (`strPasscodeAdmin`,`strCustomerCode`,`lngProcedure_ID`),
KEY `idMainReport_ID` (`idMainReport_ID`,`strPasscodeAdmin`,`strCustomerCode`,`strPasscodeClient`),
KEY `strCustomerCode` (`strCustomerCode`,`lngInspector_02_ID`),
KEY `lngShift_ID_2` (`lngShift_ID`,`strCustomerCode`),
KEY `strCustomerCode_2` (`strCustomerCode`,`lngUnit_ID`),

CONSTRAINT `FK_WithShiftID` FOREIGN KEY (`lngShift_ID`) REFERENCES `tblREF_ShiftID` (`idShift_ID`) 
    ON DELETE CASCADE ON UPDATE CASCADE) 
ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=latin1
4

1 に答える 1

0

あなたのエラーは言う

エラー 1046: データベースが選択されていません

これは、データベースが選択されていないためです。テーブルを探すデータベースをSQLサーバーがどのように知ることになっていますCheck4It_MainDBか?

ワークベンチでこれを行うには、データベースを右クリックして を選択しますSet As Default Schema。これにより、指定されたデータベースを使用するデータベースを明示的に指定しないスクリプトが作成されます。

より良い方法は、これをすべてのスクリプトの先頭に追加することです。

use MyDatabaseName;

その後に実行されるコードは、再度明示的に定義されていない限り、そのデータベースを使用します。

于 2013-09-19T17:12:21.343 に答える